首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django ORM:所有至少有一个组的用户

Django ORM:所有至少有一个组的用户
EN

Stack Overflow用户
提问于 2019-01-25 14:24:20
回答 5查看 694关注 0票数 2

我想找到至少在一个组中的所有用户。

我找到了一个解决办法

代码语言:javascript
运行
复制
from django import setup

setup()

from django.contrib.auth.models import User
user_without_group = User.objects.update_or_create(username='user-without-group')[0]
user_without_group.groups.clear()
query = User.objects.filter(groups__isnull=False).values_list('username', flat=True)
print (query.query)
print list(query)
assert user_without_group.username not in query

..。但解决办法不太好。有比groups__isnull=False更明显的解决方案吗?

更新

为什么我认为这个解决方案不太好:我认为这并不明显。它不容易阅读和理解。如果您向知道Python但从未使用django ORM的人展示这一点,我认为他不会立即理解这意味着什么。

代码语言:javascript
运行
复制
User.objects.filter(groups__isnull=False)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-02-01 18:19:19

您可以考虑添加一个可读的自定义查找字段,如group__at_least_one=True by 自定义查找

票数 1
EN

Stack Overflow用户

发布于 2019-01-25 15:29:49

我不知道你对groups__isnull=False有什么意见,这是绝对好的。但是请注意,它完全等同于groups=None,您可能会发现它更好一些。

票数 5
EN

Stack Overflow用户

发布于 2019-01-25 14:35:03

你也可以:

代码语言:javascript
运行
复制
Group.objects.values_list('user').distinct('user')

并且您将获得唯一的用户只有1和更多的Group

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54367178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档