[英]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.