python - 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)]))
...
我怎样才能得到这些数据?
解决方案
我不认为你可以。您的数据库只保存喜欢它的人,但不保留它发生时间的信息。尽管名称如此,但只要模型保存,它就会更新,因此它只会告诉您created_at
上次喜欢/不喜欢/更改的时间。
您需要做的是添加额外的模型/表,该模型/表还将记录对喜欢的所有更改,以便您可以从中创建此报告。
推荐阅读
- android - Firebase crashlytics 不适用于 Android
- r - 如何自动让一些代码运行我打开 RStudio 的所有内容?
- c++ - 如何转发将枚举类声明为模板类的内部类?
- r - 如何将列表元素传递给R中的模型?
- sql - SQL:不支持选择 * - 从子查询中获取列名
- java - webflux如何将当前登录单声道字符串传递给通量
- javascript - 在 React Js 中动态渲染数组元素
- javascript - 在 Angular 8 中上传 CSV 或 Excel 文件,并在网格中显示文件的数据(列和行)作为 Angular 8 中的预览 - 无需外部库
- c# - Entity Framework Core v3:消除重复数据
- java - 由于超出配额,出现 403 错误。但是没有超过配额?