簡體   English   中英

將外鍵值傳遞給Django中的Choice

[英]Passing foreign key value to Choice in Django

我對Forms和ModelForms的工作方式有些困惑,我想在創建表單時根據字段值創建彩色按鈕。

{% for category in form.category  %}
<label class="colored-icon btn btn-default btn-sm" style="background-color: {{ category.color }}">
    {{ category.choice_label|slice:"1" }}
    {{ category.tag }}
</label>
{% endfor %}

問題是category.color顯然沒有我需要的價值。

我的表單基於“交易”模型。 我需要以某種方式從“類別”模型訪問“顏色”屬性,如下所示:

forms.py

class TransactionForm(forms.ModelForm):
    class Meta:
        model = Transaction

models.py

class Transaction(models.Model):
    category = models.ForeignKey(Category, default='Unspecified')

class Category(models.Model):
    color = models.CharField(max_length=10)

views.py

def index(request):
    form = TransactionForm(request.POST)
    new_transaction = form.save()
    context = {
        'form': form,
    }

return render(request, 'index.html', context)

選擇“ category.color”並將其傳遞給我正在創建的每個字段的正確方法是什么?

謝謝。

嘗試這個:

class Category(models.Model):
    color = models.CharField(max_length=10)

    def __unicode__(self):
        return '%s - %s' % (self.OtherFieldName, self.color)

選擇內部的方式應如下所示

<option value='CategoryID'>OtherFieldName_value - color_value</option>

好了,我想出了一種方法來修改@ warath-coder答案。 如果我無法訪問“ _value”屬性,那么我必須實現“ split”過濾器,並使用它來拆分獲得的值,並使用該值的“ color”部分。

models.py

class Category(models.Model):
    color = models.CharField(max_length=10)

    def __unicode__(self):
        return '%s - %s' % (self.OtherFieldName, self.color)

split_filter.py

@register.filter(name='split')
def split(value, arg):
    return value.split(arg)

index.html

{% with category.choice_label|split:"-" as label %}
<label class="btn btn-default btn-sm" style="background-color: {{ label.1 }}">
  {{ label.0 }}
  {{ category.tag }}
</label>
{% endwith %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM