【发布时间】:2016-06-18 16:00:09
【问题描述】:
假设我有一个团队模型,team 有 members。
所以
class Team(models.Model):
team_member = models.ManyToManyField('Employee')
class Employee(models.Model):
....
假设我有一个员工 ID 列表,例如 team_members = [1001, 1003, 1004],我想找到由这三个成员组成的 Team。
我不想要拥有[1001, 1003, 1004, 1005] 的团队或拥有[1001, 1003] 的团队。
仅限团队[1001, 1003, 1004]。
这就是我现在正在做的事情:
teams = Team.objects.all()
for t in teams:
if set([x.id for x in t.team_member.all()]) == set(team_members):
team = t
if not team:
team = Team.objects.create()
team.team_member = team_members
但这似乎有点笨拙。有没有更简洁的方法,嵌套循环更少?
【问题讨论】:
-
我认为你可以使用
in->Team.objects.filter(team_member__pk__in=team_members) -
这将返回一个包含这三个成员和其他成员的团队。我想要这些团队成员。
-
你试过了吗?那不会返回 a tem
-
它返回一个包含任何
team_members的团队的查询集。我需要一个只由这三个团队成员组成的团队。 -
你说:如果有他们所属的。
标签: django django-models m2m