【发布时间】:2013-02-06 13:00:58
【问题描述】:
我正在覆盖模型的管理表单以修改 ForeignKey 字段的 choices。
在管理表单中选择一个选项并保存时,我得到一个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)
【问题讨论】: