保存時に、外部キーがまだ存在しない場合は作成して保存する必要があるモデルがあります。
class MyModel(m.Model):
fk = m.ForeignKey(AnotherModel)
def save(self):
if not self.fk_id:
self.fk = AnotherModel()
self.fk.save()
return super(MyModel, self).save()
ただし、はまだ nullであるため、 を呼び出すとsuper(MyModel, self).save()
エラーが発生します。self.fk_id
トレースバック (最新の呼び出しが最後): ... ファイル「.../models.py」、10行目、保存 super(MyModel, self).save() を返す ... ファイル「.../django/db/backends/postgresql_psycopg2/base.py」、44行目、実行中 return self.cursor.execute(クエリ、引数) IntegrityError: 列 "fk_id" の null 値が not-null 制約に違反しています
注: デバッガーは がself.fk.id
正しく設定されていることを示し、self.fk_id = self.fk.id
が追加されるとすべてが機能するように見えます。
だから、私の質問:なぜself.fk_id = self.fk.id
必要なのですか?そして、それを明示的に避けることは可能ですか?