Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django筛选用户喜欢的帖子_Python_Django_Django Orm - Fatal编程技术网

Python Django筛选用户喜欢的帖子

Python Django筛选用户喜欢的帖子,python,django,django-orm,Python,Django,Django Orm,后模型 class Post(models.Model): likes = models.ManyToManyField(User, related_name="liked_by", blank=True) 我试图查询特定用户喜欢的所有帖子,但找不到合适的查询。 这就是我要问的问题 Post.objects.filter(likes__liked_by=User.objects.get(pk=1)) 如何实现这一点?您可以使用预取\u相关的并执行如下查询 User

后模型

class Post(models.Model):
    likes = models.ManyToManyField(User, related_name="liked_by", blank=True)
我试图查询特定用户喜欢的所有帖子,但找不到合适的查询。 这就是我要问的问题

Post.objects.filter(likes__liked_by=User.objects.get(pk=1))

如何实现这一点?

您可以使用
预取\u相关的
并执行如下查询

User.objects.prefetch_related('liked_by').get(pk=1).liked_by.all()

您可以使用
预回迁\u相关的
并执行如下查询

User.objects.prefetch_related('liked_by').get(pk=1).liked_by.all()

你可能想从相反的角度来看待它,所以通过

User.objects.get(pk=1).liked_by.all()

你可能想从相反的角度来看待它,所以通过

User.objects.get(pk=1).liked_by.all()

这是django orm吗?@MaximilianBurszley yesIs这是django orm吗?@MaximilianBurszley yesIt有效,但这与@RBowen的答案有什么区别?你不需要做与此相关的预取,如果查询多个记录,你会使用更多的优化。Jango将执行单独的查询,如果我们做类似的事情
user=user.objects.get(pk=1)
user.liked\u by.all()
一个获取用户,然后另一个获取其所有相关帖子。但是,如果我们使用
prefetch\u related
,它将只执行包含join的查询。您可以通过查看被查询用户的对象dict.
User.\uuuu dict\uuu
进行检查。它可以工作,但这与@RBowen的答案有什么区别?您不需要在此处执行预取相关操作,如果查询多个记录,这是一种优化,您将使用更多。Jango将执行单独的查询,如果我们按照要求执行操作
user=user.objects.get(pk=1)
user.liked\u by.all()
一个获取用户,然后另一个获取其所有相关帖子。但是,如果我们使用
prefetch\u related
,它将只执行包含join的查询。您可以通过查看被查询用户的对象目录进行检查。
User.\uuuuuu目录