【发布时间】:2012-10-27 13:20:24
【问题描述】:
我有这样一个 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 问题,但无法得到明确的答案。任何好的指针也会有所帮助。谢谢。
【问题讨论】:
-
快到了。查看这个问题的答案:stackoverflow.com/questions/8618068/…
标签: django django-queryset manytomanyfield django-orm