在ChoiceField

时间:2018-12-29 00:16:38

标签: django django-forms

我的表单中有一个ChoiceField。下拉菜单中显示的选项等于“行业名称-频率”(例如,汽车维护-年度)。我希望下拉列表中的选项仅等于我初始化的选项的频率字段中的值(例如,年度)。

Models.py

class IndustryFrequency(models.Model):    
    industryname = models.ForeignKey(Industry, on_delete=models.CASCADE)
    frequency = models.CharField()

    def __str__(self):
        return '{} - {}'.format(self.industryname, self.frequency)

Forms.py

class UserOrderForm(forms.Form):
    frequency = forms.ChoiceField()

    def __init__(self, *args, **kwargs):
        super(UserOrderForm, self).__init__(*args, **kwargs)
        self.fields['frequency'].choices = [(t.id, t) for t in IndustryFrequency.objects.filter(industryname=industry)]

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

构造choices时,请以(t.id, t.frequency)的形式给出。

就这样

[(t.id, t.frequency) for t in IndustryFrequency.objects.filter(industryname=industry)]

选择的元组代表:(要保留的值下拉菜单中显示的内容)。