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目录