我在Django中有这些简单的模型。鉴于两个帐户acc1
和acc2
,了解他们是否同时参与同一个团队的最佳方式是什么?我试图尽可能简洁(因为这是一个lambda,没有命名变量)。
class Team(models.Model):
members = models.ManyToManyField(Account, through='Participation')
class Participation(models.Model):
team = models.ForeignKey(Team, on_delete=models.CASCADE)
account = models.ForeignKey(Account, on_delete=models.CASCADE)
到目前为止我得到了什么:
def are_in_same_team(acc_pk1, acc_pk2):
teams = Team.objects.filter(participation__account__id__in=[acc_pk1, acc_pk2])
return (acc_pk1 == acc_pk2 and len(teams) == 1) or (len(teams) == 2 and teams[0] == teams[1])
答案 0 :(得分:3)
您可以检查是否存在具有两个成员的团队:
def are_in_same_team(acc_pk1, acc_pk2):
return Team.objects.filter(members__id=acc_pk1).filter(members__id=acc_pk2).exists()