2014-07-23 51 views
1

當我在我的NestedStackedInline中定義字段集或字段時,我得到Django 1.6中的MultiValueDictKeyError。在那裏我有一個自定義ID作爲CharField,並希望隱藏該字段。但是,當我通過exclude =('id',)來定義字段,或者只是將其設置爲只讀時,我會得到一個MultiValueDictKeyError。MultiValueDictKeyError當自定義ID字段丟失

這裏我的代碼:

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

提供代碼,錯誤,回溯的更多信息 – ruddra

+0

我現在更新了代碼 – kiwi541

回答

0

嘗試在id字段上設置HiddenInput小部件。因此,定義了管理模式的形式:

class MaterialForm(forms.ModelForm): 
    id = forms.CharField(max_length=30, widget=HiddenInput, required=False) 

    class Meta: 
     model = Material 

然後用

form = MaterialForm 

顯然取代

form = autocomplete_light.modelform_factory(Material) 

MaterialInline多做一些工作將需要得到它與工作自動完成。

1

我有完全相同的問題。原來,我只是需要使模型中的字段不可編輯。請注意這裏的最後一個參數:

class Material(models.Model): 
    uuid = models.CharField(primary_key=True, max_length=128, editable=False)