我有一个django项目,在其中一个页面中,我有一个表单,我在commit=False
上设置了form.save
,因此我可以为外键添加一个值。
当我这样做时,表单中的其余值不会保存。
基本上我会收到两个错误,具体取决于我保存表单的方式。
首先是我使用save.(commit=False)
代码:
form = RecipeForm()
form = form.save(commit=False)
form.original_cookbook = request.user.cookbooks.all()[0]
form.save()
错误:
IntegrityError at /cookbook/createrecipe/
(1048, "Column 'ingredients' cannot be null")
Request Method: POST
但我知道我的成分字段不是空的。
第二个错误是当我不使用commit而是设置初始值时。
代码:
form = RecipeForm(initial = {'original_cookbook' : request.user.cookbooks.all()[0]})
form.save()
错误:
IntegrityError at /cookbook/createrecipe/
(1048, "Column 'original_cookbook_id' cannot be null")
Request Method: POST
知道为什么这些方法似乎都不起作用?只是你知道我试图通过AJAX提交表单......
答案 0 :(得分:3)
您的原始表单是未绑定的,这就是为什么当您尝试保存它时,它不会验证,因为字段为空。
您应该使用:
form = RecipieForm(request.POST)
这将从填写的值中填充表单,然后您可以正常进行。