在Django中,如何根据多对多关系过滤QuerySet中的对象



所以我有一个用户配置文件模型,它有一个数据属性,这是一个多对多字段,表示一个配置文件"与另一个像Facebook上的配置文件交朋友"。这是它的代码:

friends = models.ManyToManyField("self")

我可以做什么样的查询来编写一个方法来获取与当前配置文件为好友的所有配置文件?

friends = Profile.objects.filter(friends=self.pk)

当我测试它时,这似乎给出了一个空的QuerySet

解决了它:对于Django Querysets,您使用双下划线__将属性与要检查的其他字段分隔开,因此在这种情况下,我们过滤的是friends属性,其中pk是该Profile的pk。

friends = Profile.objects.filter(friends__pk=self.pk)
return friends

最新更新