1

我有一个 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

但我知道我的成分字段不为空。

第二个错误是我不使用提交而是设置了一个初始值。

代码:

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 提交表单...

4

1 回答 1

3

您的原始表单未绑定,这就是为什么当您尝试保存它时,由于字段为空,它无法验证。

你应该使用:

form = RecipieForm(request.POST)

这将从填写的值填充表单,然后您可以正常进行。

于 2012-05-10T18:12:03.670 回答