首页 > 解决方案 > Django 检索帖子被点赞的时间

问题描述

我需要制作一份报告,显示帖子喜欢和不喜欢的分析(时间和用户)。

模型.py

class Post(models.Model):

    user = models.ForeignKey(User, related_name="posts", on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now=True)
    message = models.TextField()
    message_html = models.TextField(editable=False)
    likes = models.ManyToManyField(User, related_name="post_like")

    def __str__(self):
        return self.message

    def save(self, *args, **kwargs):
        self.message_html = misaka.html(self.message)
        super().save(*args, **kwargs)

    def total_likes(self):
        return self.likes.count()

视图.py

...
def LikeView(request, pk):
    post = get_object_or_404(Post, id=request.POST.get("post_id"))
    liked = False
    if post.likes.filter(id=request.user.id).exists():
        post.likes.remove(request.user)
        liked = False
    else:
        post.likes.add(request.user)
        liked = True

    return HttpResponseRedirect(reverse("posts:single", args=[str(post.user), str(pk)]))
...

我怎样才能得到这些数据?

标签: pythondjango

解决方案


我不认为你可以。您的数据库只保存喜欢它的人,但不保留它发生时间的信息。尽管名称如此,但只要模型保存,它就会更新,因此它只会告诉您created_at上次喜欢/不喜欢/更改的时间。

您需要做的是添加额外的模型/表,该模型/表还将记录对喜欢的所有更改,以便您可以从中创建此报告。


推荐阅读