在基于类的视图中访问当前登录的用户



我正在尝试按当前登录的用户对基于类的视图中的一些模型数据进行排序。我该怎么做?我尝试了以下操作,但没有成功:

class ChatOverView(ListView):
def get_queryset(self):
return [Message.objects.filter(sender=self.request.user),
Message.objects.filter(receiver=self.request.user)]
model = {"received": get_queryset()[0], "sent": get_queryset()[1]}
template_name = "chat/home-chat.html"

我收到以下错误消息:TypeError: get_queryset() missing 1 required positional argument: 'self'

谢谢你的帮助!

编辑我打算在我的网站上实现一个聊天系统。为了做到这一点,我建立了一个数据库,存储所有发送的消息。每个条目都包含一个"发送方"和一个"接收方"字段。借助此视图的帮助,我想显示当前登录用户收到或发送的所有消息。

您可以简单地覆盖get_context_data。您可以让DjangoListView处理其中一个列表,并自己处理另一个列表:

class ChatOverView(ListView):
model = Message
context_object_name = 'sent'
template_name = 'chat/home-chat.html'
defget_queryset(self):
return super().get_queryset().filter(
sender=self.request.user
)
defget_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context.update(
received=Message.objects.filter(receiver=self.request.user)
)
return context

最新更新