我正在覆盖模型的管理员表单以修改ForeignKey
字段的choices
。 当选择在管理形式的选择和保存,我得到一个ValueError
:覆盖模型管理员中的ForeignKey字段的选项时出现ValueError
Cannot assign "u'6'": "MyModel1.mymodel2" must be a "MyModel2" instance
其中6
是所选的选项的ID。
新的choices
构建为((<choice_1_id>, <choice_1_label>), (<choice_2_id>, <choice_2_label>),...)
,并且我得到了与渲染选择小部件相同的html,就好像我不修改choices
(除了课程的顺序)。
如果我评论在MyModel1AdminForm.__init__()
self.fields['mymodel2'] = forms.ChoiceField(choices=choices)
我没有得到任何错误...
任何人都可以帮助?
models.py
class MyModel1(models.Model):
mymodel2 = ForeignKey(MyModel2)
# more fields...
admin.py
class MyModel1AdminForm(forms.ModelForm):
class Meta:
model = MyModel1
def __init__(self, *args, **kwargs):
super(MyModel1AdminForm, self).__init__(*args, **kwargs)
# create choices with ((<choice_1_id>, <choice_1_label>), (<choice_2_id>, <choice_2_label>),...)
self.fields['mymodel2'] = forms.ChoiceField(choices=choices, widget=SelectWithDisabled) # http://djangosnippets.org/snippets/2453/
class MyModel1Admin(admin.ModelAdmin):
form = MyModel1AdminForm
my_site.register(MyModel1, MyModel1Admin)
我确实需要修改的选择,因为我想禁用某些选项(我使用自定义选择部件)。我更新了我的问题,将小部件添加到forms.ChoiceField。 – jul