Как отфильтровать объект из модели User в список - PullRequest
1 голос
/ 11 ноября 2019

Я пытаюсь составить список от пользователей, которых я фильтрую, который здесь:

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

вывод, который я хочу, что-то вроде

list_of_usernames = [adam, joe, natalie]

В списке должно быть имя пользователя пользователя. Могут ли некоторые помочь мне написать этот запрос? Я пытался что-то to_list, но у меня это не сработало.

Ответы [ 2 ]

2 голосов
/ 11 ноября 2019

Вы можете использовать .values_list(..) [Django-doc] здесь:

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

Но на самом деле обычно лучше выбрать объекты модели,и извлеките атрибут, так что логика в модели не будет «обойдена»:

from operator import <b>attrgetter</b>

list_of_usernames = list(map(
    <b>attrgetter('username')</b>,
    User.objects.filter(groups__name='Staff')
))
0 голосов
/ 11 ноября 2019

Если вам не понадобится какой-либо другой атрибут пользователя для дальнейшего использования, просто выполните:

list_of_usernames = [u.username for u in User.objects.filter(groups__name='Staff')]
...