首页 > 解决方案 > Django消息,计算两个用户之间的消息数

问题描述

我使用 django-postman 作为用户到用户的消息传递系统。现在我想在模板中显示 2 个用户之间发送了多少条消息

在模型.py

    sender = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='+',
    null=True, blank=True, verbose_name=_("sender"))
        recipient = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='+',
    null=True, blank=True, verbose_name=_("recipient"))

我如何计算两个用户之间写了多少条消息?

标签: djangodjango-models

解决方案


假设您的消息模型称为Message. 我们想知道user_1和之间有多少条消息user_2,这意味着我们user_1作为发送者user_2和接收者有多少条消息,反之亦然。

我会使用Q 表达式来表达这样的条件:

condition = (
    Q(sender=user_1, receiver=user_2) | Q(sender=user_2, receiver=user_1) 
)


Message.objects.filter(condition).count()

推荐阅读