1

AとBと言う2つのモデルがあります。

A は auth_user と 1 対 1 で、B は外部キーを介して A に関連付けられます。

モデル B のデータをフィードしようとすると、A_id' cannot be nullというエラーが表示されます。では、データを外部キーにフィードする方法を教えてもらえますか、またはデフォルトでモデル A の ID を取得できますか?

ノート:

モデルごとに個別のフォームを使用しました。つまり、モデル A のデータを送信し、成功するとプロファイル ページが表示され、リンクをクリックして 2 番目のモデルの詳細を入力すると、2 番目のフォームが表示されます。したがって、ここでは、その外部キーがモデル A の ID を取得する方法がわかりません。

4

2 に答える 2

1

モデル A を参照せずに保存する場合、つまり FK が Null の場合は、モデル B の FK フィールドを空 (null=True、blank=True) にする必要があります。それ以外の場合は、B オブジェクトに A オブジェクトをフィードしてから保存する必要があります。

于 2012-09-19T10:36:21.963 に答える
1

B オブジェクトを作成するときは、A オブジェクトへの参照を提供する必要があります。

フォームを使用して B オブジェクトを作成していると言うので、おそらく次のようなものが必要になるでしょう...

b_instance = new_b_form.save(commit=False)
b_instance.a = A.objects.get(something="whatever")  # You'll know how to find the A object you want related.
b_instance.save()

a を設定すると、データベースに保存される a_id が自動的に設定されます。

または、フォームを変更して、ユーザーが A オブジェクトを選択できるようにすることもできます。

于 2012-09-19T11:18:04.853 に答える