python - 如何使用 django 的 orm 获取额外数据?
问题描述
返回查询结果时如何获取额外数据,我想知道当前登录的用户是否喜欢该帖子,我认为解决方案是这样的:
return Post.objects.all().annotate(like_count=Count('likers'), liked=(len(Like.objects.filter(user=info.context.user, post=Post)) > 0)).order_by('-like_count')
但我无法让它工作
帖子模型:
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE,
related_name="posts")
title = models.CharField(max_length=200)
text = models.CharField(max_length=1000)
commentCount = models.IntegerField(default=0)
creation = models.DateTimeField(auto_now_add=True)
类似型号:
class Like(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE,
related_name="like")
post = models.ForeignKey(Post, on_delete=models.CASCADE,
related_name="likers")
解决方案
推荐阅读
- ruby-on-rails - Rails 表单助手:一个表单中的多个嵌套模型,如“Article.comments”?
- jquery - WordPress 上 jQuery 脚本执行缓慢
- php - 如何调用这种 php 对象
- c++ - 具有快速查找功能的 C++ 列表
- javascript - 将 PHP 变量传递给 javascript 时出现空警报(回声有效)
- c# - 如何在 c# 控制台中像 webbrowser 一样加载网站?
- sql - 如何在 SQL 中访问 JSON 对象的字段?
- python - python中的多处理库无法导入自定义模块,并且在同一python文件中定义函数时也不起作用
- nginx - 如何在 nginx 入口添加自定义安全策略和引用策略
- python - 如何在 Django 视图中进行 url 编码