【问题标题】:How to get all messages of an Inbox in django?如何在 django 中获取收件箱的所有消息?
【发布时间】:2017-05-18 11:51:23
【问题描述】:

我想获取属于用户 A 和 B 之间收件箱的所有邮件。

我的模型。

class Inbox(models.Model):
      by_user = models.ForeignKey(User); # who starts messaging
      to_user = models.ForeignKey(User); # second user

class Message(models.Model):
      sender = models.ForeignKey(User); # who starts messaging
      receiver = models.ForeignKey(User); # second user
      inbox = models.ForeignKey(Inbox); # message belongs to the inbox

urls.py

url(r'^chat/(?P<username>\w+)/$', views.getMessages)

view.py

def getMessages(request, username):
    user = User.objects.get(username=username)
    # get the inbox related to the request.user and user
    inbox = Inbox.objects.get('Whats will I write here');
    messages = inbox.messages.all().order_by('-date')
    return render(request, "inbox/chatBox.html", {'messages': messages})

有人,请帮我纠正我的 urls.py 和 view.py。

【问题讨论】:

  • 酷。到目前为止你有什么?你有什么问题?
  • 我做了模型。 Inbox and Message。之后,我不知道如何进行。

标签: django django-models chat


【解决方案1】:

您的网址中缺少该模式。

现在您有了名称的开头,但没有正则表达式。

按照文档here 调整 urls.py 以包含正确的正则表达式模式。


看起来您的视图和 URL 最终不会回答您在 A - B 之间获取所有消息的问题。充其量,您可以从 A 获取所有消息或从 B 获取所有消息。因为您有发件人/消息的接收者,您可以将视图更改为:

def getMessages(request, username):
  user = User.objects.get(username=username)
  messages = Messages.objects.filter(sender=user).order_by('-date')
  return render(request, "inbox/chatBox.html", {'messages': messages})                   

这最终会为您提供用户在 URL 中发送的所有消息。

【讨论】:

  • urls.py 已更新。你能在views.py中帮助我吗?
  • 更新的答案以协助views.py
猜你喜欢
  • 2020-01-09
  • 2012-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
相关资源
最近更新 更多