我有一個模型FooModel
有2場用默認值(default=xxx
),並標記爲空白(blank=True
),我創建了一個使用FooModel
現在ModelForm
(django.forms.ModelForm
)我想保存提交後,所以我認爲我有以下代碼:默認字段的值保存一個Django的ModelForm在型號
f = FooForm(request.POST)
if f.is_valid():
f.save()
的問題是,在這樣,我從數據庫中獲取違反例外,因爲未在HTML表單中呈現的字段不自動在FooForm實例中繼承,就像我期望的那樣......我如何包含原始模型中不應該顯示的字段給用戶? (我不希望它們渲染爲隱藏字段!)
到目前爲止,我試過2點的方法,無論是失敗...
在FooForm構造(
f = FooForm(request.POST, instance=FooModel())
)- 指定實例
創建FooModel的實例,並手動分配自動生成的值,以在窗體的數據:
i = FooModel() f.data.fieldA = i.fieldA f.data.fieldB = i.fieldB
UPDATE:
通過更準確地閱讀Django文檔,我用這種方式解決:
if f.is_valid():
formModel = f.save(commit=False)
foo = FooModel()
formModel.fieldA = foo.fieldA
formModel.fieldB = foo.fieldB
formModel.save()
但是,說實話,我不太滿意......我想抽象出除了這些領域的......也許通過使用定製的裝飾......是這樣的:
f = MissingFieldsDecorator(FooForm(request.POST))
f.save()
的辦法。你累了這裏指定的方法 [鏈接](https://docs.djangoproject.com /en/1.4/topics/forms/modelforms/#using-a-subset-of-fields-on-the-form) – akotian
你能否發表你的評論作爲答案? :) – daveoncode