django排除字典中不是模型属性的字段

时间:2014-02-11 21:51:11

标签: python django django-models

我有一个包含许多表单元素的HTML表单,它会在提交时发布到服务器。 在后端,一旦验证通过,我试图将整个POST字典传递给模型并保存。像这样:

self.form_data = {key:value for key,value in self.request.POST.iteritems() }
ApplicationModel(**self.form_data).save()

但是,表单中有一些额外的项目在模型中没有关联的属性。所以我最后说错了,

'csrf_token' is an invalid keyword argument for this function

在传递给模型之前,我必须从表单字典中显式删除这些项目。

有没有办法来抑制这个错误&忽略字典中没有映射到模型属性的所有项目?

1 个答案:

答案 0 :(得分:1)

为您的模型创建ModelForm,让它处理该逻辑。

这就是ModelForm的用途,这就是你应该如何解决这个问题:

# forms.py
from django.forms import ModelForm
from myapp.models import Article


class ApplicationForm(ModelForm):
    class Meta:
        model = Application


# views.py

def my_view(request):
    if request.method == "POST":
        form = ApplicationForm(request.POSt)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect("/thanks/")
    form = ApplicationForm()
    return render(request, 'template.html', {'form': form})