gpt4 book ai didi

python - 如何使同一模型的两个外键一起唯一?

转载 作者:太空宇宙 更新时间:2023-11-03 17:18:04 24 4
gpt4 key购买 nike

假设我有一个关系类,例如:

class Friendship(models.Model):
person1 = models.ForeignKey(Person, related_name='person1')
person2 = models.ForeignKey(Person, related_name='person2')

所以我想让这个对象对于一对 Person 来说是唯一的。如果我简单地执行 unique_together = (("person1", "person2"),) 那么我最终会得到两个 Friendship 对象,其中

FS1.person1 = A, FS1.person2 = B
FS2.person1 = B, FS2.person2 = A

想要这个。我想要两个人之间独特的友谊对象。那么我怎样才能确保任何一对 Person 最多有一个 Friendship 对象呢?

谢谢!

最佳答案

我建议你使用 model.clean 方法:

class Friendship(models.Model):
person1 = models.ForeignKey(Person, related_name='person1')
person2 = models.ForeignKey(Person, related_name='person2')

def clean(self):
direct = FriendShip.objects.filter(person1 = self.person1, person2 = self.person2)
reverse = FriendShip.objects.filter(person1 = self.person2, person2 = self.person1)

if direct.exists() or reverse.exists():
raise ValidationError({'key':'Message')})

关于python - 如何使同一模型的两个外键一起唯一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33445486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com