需要在管理员中将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)
将CHOICES
和category_id
分配放在__init__()
之外可以正常工作。我认为我遇到了某种竞赛状况,但不确定如何解决它。
答案 0 :(得分:2)
我一点都不明白您想在这里做什么,但是您需要将字段分配给字段字典。
self.fields["category_id"] = forms.ChoiceField(choices = CHOICES)