我有一个包含许多表单元素的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
在传递给模型之前,我必须从表单字典中显式删除这些项目。
有没有办法来抑制这个错误&忽略字典中没有映射到模型属性的所有项目?
答案 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})