У меня есть такая модель книги:
class Book(models.Model):
authors = models.ManyToManyField(Author, ...)
...
Короче:
Я хотел бы получить книги, авторы которых строго равны заданному набору авторов. Я не уверен, что есть один запрос, который делает это, но любые предложения будут полезны.
В длинном:
Вот что я пробовал (не удалось запустить Get AttributeError)
# A sample set of authors
target_authors = set((author_1, author_2))
# To reduce the search space,
# first retrieve those books with just 2 authors.
candidate_books = Book.objects.annotate(c=Count('authors')).filter(c=len(target_authors))
final_books = QuerySet()
for author in target_authors:
temp_books = candidate_books.filter(authors__in=[author])
final_books = final_books and temp_books
... и вот что я получил:
AttributeError: 'NoneType' object has no attribute '_meta'
В общем, как я должен запрашивать модель с ограничением, что ее поле ManyToMany содержит набор заданных объектов, как в моем случае?
ps: Я нашел некоторые актуальные вопросы SO, но не смог получить четкого ответа. Любой хороший указатель будет полезен. Спасибо.