0

以下のようなモデルがあります。

class Submission(models.Model):
    round = models.ForeignKey('Round',related_name='submissions')
    text = models.TextField()

class Round(models.Model):
    favorite = models.OneToOneField('Submission',related_name='round_favorite+',null=True)

Round.favorite が Round.submissions にあることを強制する組み込みの方法はありますか? すなわち:

assert(favorite in round.submissions.all())

そうでない場合、このアサーションを強制する最善の方法は何ですか? pre_save 信号?Model.save を上書きしていますか?

4

1 に答える 1

1

Roundモデルの保存をオーバーライドして、送信が存在することを確認し、favorite存在しない場合は保存する必要があります。

が存在しないRoundときにモデルを保存しようとすると、例外がスローされます。そのため、例外を使用して保存して再試行できます。favoriteSubmissionSubmission.DoesNotExist

于 2013-01-18T08:05:22.717 に答える