带选择的Django CharField,需要模型实例

时间:2018-07-15 17:24:44

标签: python django django-admin

需要在管理员中将CharField转换为forms.ChoiceField

这些选择来自基于模型实例参数的外部API。由于我需要模型实例,因此将代码放在ModelForm.__init__()方法中。这不会将CharField变成ChoiceField

class OfferAdminForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(OfferAdminForm, self).__init__(*args, **kwargs)
        if hasattr(self, 'instance'):
            CHOICES = (
                ('A', 'Choice A'),
                ('B', 'Choice B'),
            )
            category_id = forms.ChoiceField(choices = CHOICES)

CHOICEScategory_id分配放在__init__()之外可以正常工作。我认为我遇到了某种竞赛状况,但不确定如何解决它。

1 个答案:

答案 0 :(得分:2)

我一点都不明白您想在这里做什么,但是您需要将字段分配给字段字典。

self.fields["category_id"] = forms.ChoiceField(choices = CHOICES)