django - 如何根据用户状态过滤列表视图查询集
问题描述
嘿,我有一个 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
解决方案
你非常接近你只需要获取登录用户并相应地准备查询集: -
def get_queryset(self):
if self.request.user.is_superuser:
queryset = Event.objects.all()
else:
queryset = Event.objects.filter(is_open=True)
return queryset