一段时间内每天喜欢的总数

问题描述 投票:0回答:1

我正在Django RF上构建REST Api,它代表了非常基本的社交网络。我有一个模型Post,其值Likes通过Like模型与许多用户相关。我的模特:

class Post(models.Model):
    content = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(CustomUser, on_delete=models.CASCADE,
                               related_name='posts')
    likes = models.ManyToManyField(CustomUser,
                                   related_name='likes',
                                   through='Like')

class Like(models.Model):
    author = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    liked_on = models.DateTimeField(auto_now_add=True)

我需要在给定期间内每天汇总喜欢的统计信息。例如,请求看起来像这样analytics /?date_from = 2020-05-15&date_to = 2020-05-17

而且我需要给这样的东西:

[{
    'date': 2020-05-15,
    'likes': 5,
}, {
    'date': 2020-05-16,
    'likes': 7,
}, {
    'date': 2020-05-17,
    'likes': 10,
}]

我如何在Django中做到这一点?我应该查询仅具有喜欢列表的帖子模型吗?还是喜欢的模特?那应该是什么查询?

django django-rest-framework django-queryset django-aggregation
1个回答
0
投票

您应使用Django-Filter。然后在过滤器类中,添加以下过滤器:

date_from = filters.DateTimeFilter(field_name='liked_on', lookup_expr='gte')
date_to = filters.DateTimeFilter(field_name='liked_on', lookup_expr='lte')

然后,您可以按照指定的要求进行请求,但使用日期时间而不是日期。可以将fuilter类添加到LikesView

© www.soinside.com 2019 - 2024. All rights reserved.