1

私はdjangoプロジェクトを持っており、ページの1つに、外部キーの値を追加できるように設定commit=Falseしたフォームがあります。form.save

そうすると、フォームの残りの値は保存されません。

基本的に、フォームの保存方法に応じて 2 つのエラーが発生します。

最初は私が使用するときです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

しかし、食材フィールドが null ではないことはわかっています。

2 番目のエラーは、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経由でフォームを送信しようとしていることを知っているように...

4

1 に答える 1

3

元のフォームはバインドされていないため、保存しようとすると、フィールドが空であるため検証されません。

以下を使用する必要があります。

form = RecipieForm(request.POST)

これにより、入力された値からフォームが入力され、通常どおり続行できます。

于 2012-05-10T18:12:03.670 に答える