2013-03-02 105 views
2

我有一個無法通過驗證的模型表單,因爲我不想顯示模板中的某些字段,它們對用戶不重要,但是屬於模型的一部分,並且生成了它們的值如何設置這些字段在表單中不被要求(在POST之後生成它們的值),以便表單可以通過驗證,並且它們應該在模型中需要?如果沒有所有字段,模型表單不能驗證?

回答

4

使用模型實例來填充表單中的數據。而不是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'的引號
+0

謝謝!而已! – Zed 2013-03-02 19:55:53

相關問題