Django消息,计算两个用户之间的消息数

时间:2019-02-02 23:13:06

标签: django django-models

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

在models.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"))

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

3 个答案:

答案 0 :(得分:0)

首先使用.filter()进行查询,以过滤二者的消息,然后使用.len()或.count()计数查询集中的项目总数

答案 1 :(得分:0)

假设您的模型名为Message,您可以这样做:

# Returns the number of messages exchanged between SENDER_USER AND RECEIVER_USER
exchanged_messages = Message.objects.filter(sender=SENDER_USER).filter(receiver=RECEIVER_USER).count()

答案 2 :(得分:0)

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

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

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


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