如何为模型做unique_together
:
class Team(models.Model:
user_a = models.ForeignKey(User, related_name='a')
user_b = models.ForeignKey(User, related_name='b')
我想确保user_a
和user_b
不能重复,无论顺序如何。
因此user_a=1
,user_b=2
也会约束user_a=2
,user_b=1
,而不是完全重复。
是否有一种方法可以执行此操作,而无需使用自定义逻辑来检查是否保存了团队?我目前只是让它们重复,然后使用RawSQL查询删除重复的字段。
答案 0 :(得分:1)
我已经检查了,您可以在模型中将unique_together
类的Meta
属性与外键一起使用。尝试类似的东西:
class Team(models.Model:
class Meta:
unique_together = (("user_a", "user_b"))
user_a = models.ForeignKey(User, related_name='a')
user_b = models.ForeignKey(User, related_name='b')
如果它不适合您的需求,则可以覆盖模型的save
或validate_unique
方法。请参阅相关文档here。但是您需要添加自定义逻辑。