2

我有一个模型表单无法通过验证,因为我不想显示模板中的某些字段,它们对用户来说并不重要,但它们是模型的一部分,并且它们的值是动态生成的。我如何将这些字段设置为表单中不需要(它们的值是在 POST 之后生成的),以便表单可以通过验证,并且它们应该在模型中是必需的?

4

1 回答 1

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

有关更多信息,您可以查看:在视图中保存时设置 user_id - Django

'field_name'更新:我在排除行中添加了引号Form

于 2013-03-02T16:20:14.573 回答