django无法保存模型选择选定的值

时间:2016-07-19 19:15:12

标签: django

我想在模型字段中保存选定的选项 我的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工作。 可能有人知道如何解决这个问题?

1 个答案:

答案 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那样呈现为下拉列表,所以你一定要使用它。