2
我有一個無法通過驗證的模型表單,因爲我不想顯示模板中的某些字段,它們對用戶不重要,但是屬於模型的一部分,並且生成了它們的值如何設置這些字段在表單中不被要求(在POST之後生成它們的值),以便表單可以通過驗證,並且它們應該在模型中需要?如果沒有所有字段,模型表單不能驗證?
我有一個無法通過驗證的模型表單,因爲我不想顯示模板中的某些字段,它們對用戶不重要,但是屬於模型的一部分,並且生成了它們的值如何設置這些字段在表單中不被要求(在POST之後生成它們的值),以便表單可以通過驗證,並且它們應該在模型中需要?如果沒有所有字段,模型表單不能驗證?
使用模型實例來填充表單中的數據。而不是form = Form()
,您會得到您將要保存的模型的實例 - model_object = Model.objects.get(id=27)
- (或者您可能會獲取它),然後使用form = Form(instance=model_object)
。這用模型數據填充字段。
如果你寧願排除字段,以便您可以動態地計算出的值,請嘗試以下步驟:
class Form(forms.ModelForm):
class Meta:
model = Model
exclude = ('field_name', 'field_name', 'field_name', ...) # the fields you want to exclude
然後:
def View(request):
if request.POST:
form = Form(request.POST)
if form.is_valid():
model_object = form.save(commit=False) # an unsaved model object
model_object.field = some dynamic value
model_object.another_field = some other dynamic value
model_object.save() # save the model, ignore the form
欲瞭解更多信息,你可以看看:Setting user_id when saving in view - Django
更新:我在排除行Form
'field_name'
的引號
謝謝!而已! – Zed 2013-03-02 19:55:53