我有这样一个 Book 模型:
class Book(models.Model):
authors = models.ManyToManyField(Author, ...)
...
简而言之:
我想检索其作者严格等于给定作者集的书籍。我不确定是否有一个查询可以做到这一点,但任何建议都会有所帮助。
长篇:
这是我尝试过的,(未能运行获取 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问题,但无法得到明确的答案。任何好的指针也会有所帮助。谢谢。