3

保存時に、外部キーがまだ存在しない場合は作成して保存する必要があるモデルがあります。

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必要なのですか?そして、それを明示的に避けることは可能ですか?

4

1 に答える 1

1

このバグレポートがあなたの答えだと思います。現在、主キー自体を持った後、関連するオブジェクトを設定する必要があります。彼らはまだパッチについて話し合っています。

于 2012-07-18T21:51:17.617 に答える