我在 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])
请您参考如下方法:
你可以检查是否存在一个拥有两个成员的团队:
def are_in_same_team(acc_pk1, acc_pk2):
return Team.objects.filter(members__id=acc_pk1).filter(members__id=acc_pk2).exists()
