我正在覆蓋模型的管理員表單以修改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