如何在django中获取收件箱的所有邮件?

时间:2017-05-18 11:51:23

标签: django django-models chat

我希望所有邮件都属于用户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。

1 个答案:

答案 0 :(得分:0)

您错过了网址上的模式。

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

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

看起来您的观点和网址最终无法回答您在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中发送的所有消息。