在顶部使用特定组对 django 用户进行排序
Sort django users with specific groups on the top
应用程序的所有用户都映射到至少一个组。这是可用组的列表:
>>>Group.objects.all()
<QuerySet [<Group: superuser>, <Group: maintainer>, <Group: admin>, <Group: executive>, <Group: client>, <Group: other>]>
当我使用 .all()
呈现查询集中的所有用户时,我想用特定的自定义顺序对它们进行排序,这样,所有 Superusers
都应该在顶部,然后 Admins
,然后是 Executives
,然后是下面列表中的其余用户。
custom_sort_order = ['superuser', 'admin', 'executive', 'client', 'maintainer', 'other']
想知道,如何在 queryset
上使用 sorted()
函数:
class UserList(generic.ListView):
model = User
queryset = User.objects.all()
template_name = 'users/users.html'
paginate_by = 10
您可以通过查看 custom_sort_order
:
对 user group name
进行排序
def get_queryset(self):
qs = super().get_queryset()
custom_sort_order = ['superuser', 'admin', 'executive', 'client', 'maintainer', 'other']
return sorted(qs, key=lambda item: custom_sort_order.index(item.groups.first().name))
应用程序的所有用户都映射到至少一个组。这是可用组的列表:
>>>Group.objects.all()
<QuerySet [<Group: superuser>, <Group: maintainer>, <Group: admin>, <Group: executive>, <Group: client>, <Group: other>]>
当我使用 .all()
呈现查询集中的所有用户时,我想用特定的自定义顺序对它们进行排序,这样,所有 Superusers
都应该在顶部,然后 Admins
,然后是 Executives
,然后是下面列表中的其余用户。
custom_sort_order = ['superuser', 'admin', 'executive', 'client', 'maintainer', 'other']
想知道,如何在 queryset
上使用 sorted()
函数:
class UserList(generic.ListView):
model = User
queryset = User.objects.all()
template_name = 'users/users.html'
paginate_by = 10
您可以通过查看 custom_sort_order
:
user group name
进行排序
def get_queryset(self):
qs = super().get_queryset()
custom_sort_order = ['superuser', 'admin', 'executive', 'client', 'maintainer', 'other']
return sorted(qs, key=lambda item: custom_sort_order.index(item.groups.first().name))