当我在NestedStackedInline中定义字段集或字段时,我在Django 1.6中得到一个MultiValueDictKeyError。在那里,我有一个自定义ID作为CharField,并希望隐藏该字段。但是,当我通过exclude =(' id',)来定义没有它的字段或只是使它成为只读时,我得到一个MultiValueDictKeyError。
这是我的代码:
class MaterialInline(NestedStackedInline):
fieldsets = ('name', 'amount', 'date')
#without custom id I get that error(id=models.Charfield(primary_key=True))
model = Material
extra = 1
form = autocomplete_light.modelform_factory(Material)
class ResearchAdmin(NestedModelAdmin):
inlines = [MaterialInline, ]
fields =('id','subject', 'topic')
错误:
Exception Type: MultiValueDictKeyError
Exception Value: "u'material_set-0-id'"
Exception Location: /usr/local/lib/python2.7/dist-packages/django/utils/datastructures.py in __getitem__, line 301
...
/home/administrator/src/django-nested-inlines/nested_inlines/admin.py in change_view
269. self.add_nested_inline_formsets(request, inline, formset)
/home/administrator/src/django-nested-inlines/nested_inlines/admin.py in add_nested_inline_formsets
65. for form in formset.forms:
有谁知道这个问题? 提前谢谢!
答案 0 :(得分:1)
我遇到了完全相同的问题。原来我只需要在模型中使该字段不可编辑。请注意这里的最后一个参数:
class Material(models.Model):
uuid = models.CharField(primary_key=True, max_length=128, editable=False)
答案 1 :(得分:0)
尝试在id字段上设置HiddenInput小部件。因此,为管理员定义一个模型表单:
class MaterialForm(forms.ModelForm):
id = forms.CharField(max_length=30, widget=HiddenInput, required=False)
class Meta:
model = Material
然后替换
form = autocomplete_light.modelform_factory(Material)
<{1>}中的
MaterialInline
显然,要使用自动完成功能,需要做更多的工作。