【发布时间】:2019-12-19 23:17:45
【问题描述】:
我试图在同一个模板中显示所有客户、超级用户和员工。我怎样才能做到这一点?我有这样的运行代码
class GroupListView(UserPassesTestMixin, ListView):
model = User
template_name = 'admin_app/group_list.html'
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
group_name = (self.kwargs['group'])
if group_name == 'admin':
context['user_list']= User.objects.filter(is_superuser=True, is_staff=True)
elif group_name == 'staff':
context['user_list'] = User.objects.filter(is_staff=True)
else:
context['user_list'] = User.objects.filter(is_superuser=False, is_staff=False)
return context
def test_func(self):
return self.request.user.is_superuser
产生命中的url是这样的
<a href="{% url 'admin:group_list' group='admin' %}"><i class="fa fa-adn"></i>Admin</a>
模板很大,所以没有必要发布。这正在产生结果,但有没有更好的方法来做到这一点?
如何创建组然后渲染数据?
注意- 我怎样才能创建一个链接和视图,以根据单击的链接对所有用户进行排序。 (在 Django-Admin 中也是如此)
【问题讨论】:
-
我不确定你为什么认为你已经在做的事情有什么问题,尤其是考虑到它正在按你的意愿工作。您是否有某些具体原因不想这样做?
-
看来工作量太大了。如果有很多组,代码会看起来很乱
-
啊,所以您的意思是您将拥有更多的组,而不仅仅是管理员、员工和用户?
-
@urbanespaceman 是的!确切地。你能帮我解决这个使 url 参数成为可选/非捕获的问题吗?
-
@urbanespaceman ``` re_path(r'^users/(?:(?P
))', views.UserListView.as_view(), name='user_list'), ``` 我怎样才能使这个 slug 参数可选/非捕获,以便是否存在 slug 无关紧要?
标签: django django-models django-templates django-views