【发布时间】:2020-09-24 09:47:30
【问题描述】:
from django.db import models
class Group(models.Model):
users = models.ManyToMany(User, blank=True, related_name="groups"
class Task(models.Model):
users = models.ManyToManyField(User, blank=True, related_name="personal_tasks")
groups = models.ManyToManyField(Group, blank=True, related_name="group_tasks")
注意:上面的代码是为了演示概念,它不是正在使用的代码。
那么以上面的模型为例,是否有可能(最好使用单个查询)获得唯一用户的总数?
我最初只是想将 users 字段和 groups__users 字段的计数相加,但是,我想考虑到有人亲自和通过他们的小组分配任务的可能性。
【问题讨论】:
-
所以您想获取组中唯一用户的数量对吗?
-
使用 Through 属性,再创建一个表(如果没有指定,django 会自动创建),假设你叫它
GroupUser,然后使用过滤器:GroupUser.objects,filter(group=gid).distinct() -
@CharanjitSingh 但 OP 可能还需要来自
Tasks.users的用户,并将这些用户与Tasks.groups.users结合起来,然后得到一个独特的。 -
@shad0w_wa1k3r 是的,这就是我需要做的。
-
what 的唯一用户总数?对于单个任务?每个任务?你如何计算用户数?只有
users,还是groups中的那些?
标签: python django many-to-many django-orm