ModelChoiceField
顾名思义,A处理模型对象。因此你不能values_list
在这里使用。
因此,您Form
应该定义如下内容:
class PayThis(forms.Form):
amount = forms.FloatField(required=False)
cost2 = forms.FloatField(required=False)
year = forms.ModelChoiceField(required=False, queryset=AnAgricol.objects.all())
您可以覆盖__str__
返回年份的字符串表示形式,例如:
AnAgricol(models.Model):
anul = models.IntegerField()
def __str__(self):
return str(self.anul)
但是,如果年份不是要代表的东西AnAgricol
,那么您可以使用ChoiceField
[Django-doc],例如:
class PayThis(forms.Form):
amount = forms.FloatField(required=False)
cost2 = forms.FloatField(required=False)
year = forms.ChoiceField(required=False, choices=[])
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['year'].choices = [
(yr, yr) for yr
in AnAgricol.objects.values_list('anul', flat=True).distinct()
]