ModelChoiceField 列出元组而不是简单值
ModelChoiceField lists tuples instead of simple values
我有一个带有 ModelChoiceField 输入的 Django 表单,它将结果列为元组而不是简单值。
我不知道该怎么做。
DJANGO
class PayThis(forms.Form):
amount = forms.FloatField(required=False)
cost2 = forms.FloatField(required=False)
year = forms.ModelChoiceField(required=False,queryset=AnAgricol.objects.values_list('anul').all())
HTML
<option value="(2019,)">(2019,)</option>
我希望得到这个:
A ModelChoiceField
交易,顾名思义,涉及模型对象。因此,您不能在此处使用 values_list
。
您的 Form
因此应该定义如下内容:
class PayThis(forms.Form):
amount = forms.FloatField(required=False)
cost2 = forms.FloatField(required=False)
year = forms.ModelChoiceField(required=False, queryset=<b>AnAgricol.objects.all()</b>)
您可以将 __str__
覆盖为 return 年份的字符串表示形式,例如:
AnAgricol(models.Model):
anul = models.IntegerField()
def <b>__str__</b>(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<b>, choices=[]</b>)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['year']<b>.choices</b> = [
(yr, yr) for yr
in AnAgricol.objects.values_list('anul', flat=True).distinct()
]
我有一个带有 ModelChoiceField 输入的 Django 表单,它将结果列为元组而不是简单值。
我不知道该怎么做。
DJANGO
class PayThis(forms.Form):
amount = forms.FloatField(required=False)
cost2 = forms.FloatField(required=False)
year = forms.ModelChoiceField(required=False,queryset=AnAgricol.objects.values_list('anul').all())
HTML
<option value="(2019,)">(2019,)</option>
我希望得到这个:
A ModelChoiceField
交易,顾名思义,涉及模型对象。因此,您不能在此处使用 values_list
。
您的 Form
因此应该定义如下内容:
class PayThis(forms.Form):
amount = forms.FloatField(required=False)
cost2 = forms.FloatField(required=False)
year = forms.ModelChoiceField(required=False, queryset=<b>AnAgricol.objects.all()</b>)
您可以将 __str__
覆盖为 return 年份的字符串表示形式,例如:
AnAgricol(models.Model):
anul = models.IntegerField()
def <b>__str__</b>(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<b>, choices=[]</b>)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['year']<b>.choices</b> = [
(yr, yr) for yr
in AnAgricol.objects.values_list('anul', flat=True).distinct()
]