Django在

时间:2017-12-26 19:55:51

标签: django django-models

型号:

class Book:
    title = CharField()
    author = ForeignKey(Person, related_name='books')

class Person:
    name = CharField()

如何选择拥有某套书籍的人?

例如,选择所有具有('A','B','C')作为书籍(可能更多)的人,即子集。

2 个答案:

答案 0 :(得分:1)

如果您想获得特定帐套的作者集:

Person.object.filter(books__in=Book.objects.filter(name__in=['A','B','C']))

或更短:

Person.object.filter(books__name__in=['A','B','C']))

答案 1 :(得分:1)

尝试使用intersection

queryset = Person.objects.filter(books__title='A').intersection(Person.objects.filter(books__title='B'), Person.objects.filter(books__title='C'))

如果你使用的是早于1.11的Django,那么:

queryset = Person.objects.filter(books__title='A') & Person.objects.filter(books__title='B') & Person.objects.filter(books__title='C')