我想在模型字段中保存选定的选项 我的models.py:
qobj = Model1.objects.all()
CHOICE = (
(x.id, x.name) for x in qobj
)
class Model2(models.Model):
choice_field = models.CharField(max_length=77, choices=CHOICE)
class Model2Form(ModelForm):
class Meta:
model = Model2
fields = ['choice_field']
当我尝试保存model2时出现错误:
“选择有效的选择.5不是可用选项之一。”。
我正在尝试forms.ModelChoiceField
,但我无法让Model2.get_choice_field_display()
,forms.ChoiceField
和小工具Select
工作。
可能有人知道如何解决这个问题?
答案 0 :(得分:1)
我认为问题在于您将choice_field
定义为CharField
,但您的选择是使用id
作为键,它们是整数。您需要将choice_field
更改为models.IntegerField
。
此外,您choice_field
的声音基于其他模型的条目。您填充数据的方式可能不起作用,因为您的CHOICES
变量只会被评估一次。您应该使用ForeignKey
代替choice_field
:
class Model2(models.Model):
choice_field = models.ForeignKey(Model1)
如果你使用django默认的渲染形式,ForeignKey
会像choices
那样呈现为下拉列表,所以你一定要使用它。