Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:消息系统,请求_Python_Django_Django Models - Fatal编程技术网

Python Django:消息系统,请求

Python Django:消息系统,请求,python,django,django-models,Python,Django,Django Models,我想在我的网站上安装一个消息系统。 为此,我希望为每个发件人和收件人选择: 发件人的用户名- 收件人用户名-最后一封邮件-最后一封交换邮件的日期-交换邮件的总数。 我的模型是这样的: class MessagePerso(models.Model): text = models.CharField(max_length=200) date_sent = models.DateTimeField(auto_now_add=True,editable=False) rea

我想在我的网站上安装一个消息系统。 为此,我希望为每个发件人和收件人选择:

  • 发件人的用户名- 收件人用户名-最后一封邮件-最后一封交换邮件的日期-交换邮件的总数。
我的模型是这样的:

class MessagePerso(models.Model):
    text = models.CharField(max_length=200)
    date_sent = models.DateTimeField(auto_now_add=True,editable=False)
    read_at = models.DateTimeField(("read at"), null=True, blank=True)

class Conversation(models.Model):
    sender = models.ForeignKey(User,null=False,related_name="sender")
    recipient = models.ForeignKey(User,null=False,related_name="recipient")
    title = models.CharField(max_length=90)
    created_at = models.DateTimeField(auto_now_add=True,editable=False)
    messages = models.ManyToManyField(MessagePerso)
目前,我有以下几点:

u = request.user    
Conversation.objects.filter(Q(sender=u)|Q(recipient=u)).annotate(nbMsg=Count('messages'),date=Max('messages__date_envoie')).values('sender__username','recipient__username','nbMsg','date').order_by('date')   
它可以工作,但我还需要最后一条消息(model MessagePerso)的文本。


如何制作?

如果您想使用您的模型并获取指定用户的消息,例如
请求。user
,您可以这样使用它:

from django.db.models import Q

all_messages = MessageBetweenUsers.objects.filter(Q(sender=request.user)|Q(recepient=request.user)
user\u messages=MessageBetweenUsers.objects.filter(recepient=request.user)

它将返回发送给当前用户的所有消息

如果要获取与此用户相关的所有消息,可以按如下方式执行:

from django.db.models import Q

all_messages = MessageBetweenUsers.objects.filter(Q(sender=request.user)|Q(recepient=request.user)

然后,您可以使用此查询集获取邮件数、发件人和收件人姓名等。

是,但我希望通过与其他用户的对话获取邮件数。。我将继续尝试搜索解决方案我修改了我的模型(后期编辑),但我有一个问题