【发布时间】:2021-02-15 01:53:45
【问题描述】:
我正在尝试在 Django 中向我的博客应用程序添加简单的用户到用户消息传递功能。我有一个允许用户发送消息的视图,但之后我在显示消息时遇到了困难。这是我的消息模型:
class Message(models.Model):
user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='messages')
sender = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='messages_from')
message = models.TextField(blank=True)
timestamp = models.DateTimeField(default=timezone.now, editable=False)
unread = models.BooleanField(default=True)
以及相关的Profile模型:
class Profile(models.Model):
first_name = models.CharField(max_length=100, blank=True)
last_name = models.CharField(max_length=100, blank=True)
user = models.OneToOneField(User, on_delete=models.CASCADE)
slug = models.SlugField(unique=True, blank=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
这是我的 MessagesView 尝试:
class MessagesView(ListView):
model = Profile
template_name = 'users/messages.html'
context_object_name = 'msg'
def get_queryset(self):
return Profile.objects.filter(messages_from__isnull=False, messages__user_id=self.request.user)
这是网址:
path('messages/<int:pk>/', MessagesView.as_view(), name='messages'),
在尝试加载此页面时,我收到错误Cannot query "user": Must be "Profile" instance,其中“user”是我尝试加载的消息的登录用户的名称。我花了很长时间在谷歌上搜索解决方案,但没有找到与我的案例相关的任何内容。请帮忙
【问题讨论】:
-
你能分享
Profile的模型吗?MessagesView也应该返回Message对象,而不是Profile对象。 -
您好,感谢您这么快的回复。帖子已编辑以现在显示
Profile模型
标签: django listview django-queryset valueerror instant-messaging