私はこれらの単純なモデルをDjangoに持っています。 acc1
とacc2
の2つのアカウントがある場合、両方が同じチームに参加しているかどうかを判断する最良の方法は何ですか?私はこれを可能な限り簡潔に保つために努力しています(これはラムダで名前付き変数ではないためです)。多くの子オブジェクトがDjangoで親を共有しているか確認してください
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])
acc1.teamを返す '試しください== acc2.team' – xbello
アカウントには多くのチームが存在する可能性があるため、オブジェクトには 'team_set'があります。あなたが示唆していることはできません。 – Crossfire