如何将模型用户中的对象过滤到列表中

我正在尝试从我过滤的用户中列出一个列表,

User.objects.filter(groups__name='Staff')

我想要类似的输出

list_of_usernames = [adam,joe,natalie]

在列表中必须是用户的用户名。可以帮我写这个查询吗?我尝试了一些to_list,但对我来说却没有用。

huhanz 回答:如何将模型用户中的对象过滤到列表中

您可以在此处使用.values_list(..) [Django-doc]

list_of_usernames = list(
    User.objects.filter(groups__name='Staff').values_list('username',flat=True)
)

但是实际上,通常最好先获取模型对象并获取属性,以免“绕过”模型中的逻辑:

from operator import attrgetter

list_of_usernames = list(map(
    attrgetter('username'),User.objects.filter(groups__name='Staff')
))
,

如果您不需要用户提供任何其他属性供以后使用,请执行以下操作:

list_of_usernames = [u.username for u in User.objects.filter(groups__name='Staff')]
本文链接:https://www.f2er.com/3127138.html

大家都在问