我的模型类似于以下内容:
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.submissions中强制执行Round.favorite?即:
assert(favorite in round.submissions.all())
如果没有,执行此断言的最佳方法是什么? pre_save信号?覆盖Model.save?
答案 0 :(得分:1)
您应该覆盖Round
模型的保存,以确保favorite
提交存在,如果不保存。
如果您在Round
不存在favorite
时尝试保存Submission
模型,则会抛出异常,最有可能是Submission.DoesNotExist
。因此,您可以使用该例外进行保存并重试。