我的Django模型中有一组嵌套的manytomany关系,我希望能够将所有相关的行连接到2个连接。它的设置如下:
class Book(models.Model):
pass
class Group(models.Model):
books = models.ManyToManyField(Book)
class Person(models.Model):
groups = models.ManyToManyField(Group)
基本上,一个人可以属于多个群组,每个群组都有多本书,但同一本书可以分为多个群组,每个群组中有多个人。
我正在尝试为Person编写一个方法列出该人的所有书籍。我非常确定它可以通过嵌套循环来完成,但这并不是一个优雅的解决方案。我试图使用QuerySets但是陷入了第二级。我正在考虑以下方面的事情:
def all_books(self):
return Book.objects.filter(group__in = self.groups)
但我总是回到一个空列表。我猜测问题出在__in
,但我不知道到底是什么。
答案 0 :(得分:1)
一种方法是:
def all_books(self):
return Book.objects.filter(group__person=self)
将至少返回用户所属的一组中的所有图书。