Django字段选择没有正确更新

时间:2016-04-07 10:22:11

标签: django django-models django-forms django-admin

我有两个模型,一个在动态选择字段中加载另一个模型的标题。到目前为止我修复了它,如果我通过更新init方法中的选项列表向模型中添加一个新对象来使用标题,则选择列表会立即更新。但是,当我决定选择它作为选项并保存时,我得到:选择一个有效的选择。示例不是可用选项之一。当我重新启动服务器它确实有效,我做了什么:

模型:

class Assessment(models.Model):
    title = models.CharField(max_length=200)

    SPECIFIC_REQUIREMENTS_CHOICES = ()
    SPECIFIC_REQUIREMENTS_CHOICES_LIST = []

    for sRequirement in SpecificRequirements.objects.all():
        SPECIFIC_REQUIREMENTS_CHOICES_LIST.append((sRequirement.title, sRequirement.title))

    SPECIFIC_REQUIREMENTS_CHOICES = SPECIFIC_REQUIREMENTS_CHOICES_LIST

    sRequirementChoice = models.CharField(max_length=200, choices=SPECIFIC_REQUIREMENTS_CHOICES,
                                default='')

形式:

class AssessmentForm(forms.ModelForm):
    class Meta:
        model = Assessment
        fields = ['title', 'sRequirementChoice']

    def __init__(self, *args, **kwargs):
        super(AssessmentForm, self).__init__(*args, **kwargs)
        SPECIFIC_REQUIREMENTS_CHOICES_LIST = []

        for sRequirement in SpecificRequirements.objects.all():
            SPECIFIC_REQUIREMENTS_CHOICES_LIST.append((sRequirement.title, sRequirement.title))

        SPECIFIC_REQUIREMENTS_CHOICES = SPECIFIC_REQUIREMENTS_CHOICES_LIST

        self.fields['sRequirementChoice'].choices = SPECIFIC_REQUIREMENTS_CHOICES

1 个答案:

答案 0 :(得分:1)

That's not how Model choices work. You are not supposed to populate choices dynamically in models.

You should consider using a ForeignKey relation with SpecificRequirements in your model.