python - 在基于类的视图中访问当前登录的用户
问题描述
我正在尝试由当前登录的用户在基于类的视图中对一些模型数据进行排序。我怎么做?我尝试了以下方法,但没有奏效:
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'
def get_queryset(self):
return super().get_queryset().filter(
sender=self.request.user
)
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context.update(
received=Message.objects.filter(receiver=self.request.user)
)
return context
推荐阅读
- matlab - 在任何偏移对角线上创建一个矩阵
- excel - Excel VBA:将公式插入单元格会导致运行时错误“1004”
- java - Java XML Reader 不适用于 URL 中的多个元素
- python - 计算编号 时间间隔的小时数,以确定是工作日还是周末
- php - mysqli_fetch 总是返回 null
- java - 确定 JVM 垃圾收集器的运行时
- ffi - 绑定到 window.navigator.getUserMedia
- javascript - CSS/JS/Jquery - 用于响应式屏幕尺寸的 Flex 项目
- c# - 一次设置没有找到合适的构造函数
- sonarqube - Visual Studio 的 SonarLint 显示 http 403 错误