Django ORM 获取未分配给团队的用户
Django ORM Get users not assigned to the Team
models.py
from django.db import models
class UserGroup(models.Model):
members = models.ManyToManyField(User, related_name='members', through='UserGroupMember')
class UserGroupMember(models.Model):
user = models.ForeignKey(User)
usergroup = models.ForeignKey(UserGroup)
class Cohort(models.Model):
user_groups = models.ManyToManyField(UserGroup)
class Team(models.Model):
cohort = models.ForeignKey(Cohort)
members = models.ManyToManyField(User, related_name='team_members', through='TeamMembers', blank=True)
class TeamMembers(models.Model):
team = models.ForeignKey(Team)
user = models.ForeignKey(User)
单个用户只能是同类群组中一个团队的一员。
查询#1
我需要编写查询以获取未分配给任何团队的给定同类群组的用户。
我试过这个:
User.objects.filter(
members__cohort=cohort
).filter(
team_members__isnull=True
)
但是如果他是另一个队列中团队的一员,那不会给我用户。
查询 #2
我想注释新字段(布尔值),它告诉您是分配给同类群组中某个团队的用户,例如:
User.objects.filter(
members__cohort=cohort
).annotate(
is_team_member=...
)
我正在使用 Python 2.7.13 和 Django 1.9.8。谢谢
尝试通过排除所有被分配给队列中团队的成员来构建查询集:
User.objects.filter(
members_cohort=cohort,
).exclude(
team_members__cohort=cohort,
)
models.py
from django.db import models
class UserGroup(models.Model):
members = models.ManyToManyField(User, related_name='members', through='UserGroupMember')
class UserGroupMember(models.Model):
user = models.ForeignKey(User)
usergroup = models.ForeignKey(UserGroup)
class Cohort(models.Model):
user_groups = models.ManyToManyField(UserGroup)
class Team(models.Model):
cohort = models.ForeignKey(Cohort)
members = models.ManyToManyField(User, related_name='team_members', through='TeamMembers', blank=True)
class TeamMembers(models.Model):
team = models.ForeignKey(Team)
user = models.ForeignKey(User)
单个用户只能是同类群组中一个团队的一员。
查询#1
我需要编写查询以获取未分配给任何团队的给定同类群组的用户。
我试过这个:
User.objects.filter(
members__cohort=cohort
).filter(
team_members__isnull=True
)
但是如果他是另一个队列中团队的一员,那不会给我用户。
查询 #2
我想注释新字段(布尔值),它告诉您是分配给同类群组中某个团队的用户,例如:
User.objects.filter(
members__cohort=cohort
).annotate(
is_team_member=...
)
我正在使用 Python 2.7.13 和 Django 1.9.8。谢谢
尝试通过排除所有被分配给队列中团队的成员来构建查询集:
User.objects.filter(
members_cohort=cohort,
).exclude(
team_members__cohort=cohort,
)