首页 > 解决方案 > 如何根据用户状态过滤列表视图查询集

问题描述

嘿,我有一个 listView 输出创建的事件列表。如何根据超级用户进行过滤?

基本上我希望管理员看到所有事件:关闭和打开,但我的用户只看到打开的一个

class EventView(ListView, LoginRequiredMixin):
    template_name = "chat/events.html"
    model = Event
    context_object_name = 'events' 

    def get_queryset(self):
        kwargs = super(EventView, self).get_form_kwargs()
        print(kwargs)
        user_pk = self.kwargs['user_id']
        user = User.objects.get(pk=user_pk)
        print(user)
        if user.is_superuser:
            queryset = Event.objects.all()
            return queryset
        else:
            queryset = Event.objects.filter(is_open=True)
            return queryset
        return queryset

标签: djangodjango-views

解决方案


你非常接近你只需要获取登录用户并相应地准备查询集: -

 def get_queryset(self):
    if self.request.user.is_superuser:
        queryset = Event.objects.all()
    else:
        queryset = Event.objects.filter(is_open=True)

    return queryset

推荐阅读