2013-01-17 46 views
0

我有類似下面的模型是什麼:Django的強制執行OneToOneField的價值屬於ForiegnKey相關對象設置

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是圓形任何內置的方式。提交?即:

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

如果不是,執行此斷言的最佳方法是什麼? pre_save信號?重寫Model.save?

回答

1

您應該覆蓋Round模型的保存以確保favorite提交存在,如果不保存。

如果您嘗試保存Round模型時favorite不插件Submission存在,就會被拋出,最有可能的Submission.DoesNotExist異常。因此,您可以使用例外進行保存並重試。