我有以下型号(细节省略):
class Author(models.Model):
name = models.CharField('name', max_length=200, blank=False)
class Book(models.Model):
title = models.CharField('title', max_length=200, blank=False)
author = models.ManyToManyField(Author, blank=False, through='Book_Author')
class Book_Author(models.Model):
book = models.ForeignKey(Book)
author = models.ForeignKey(Author)
我想获取标题包含给定查询且作者姓名包含相同查询的所有书籍。
现在我正在做以下事情:
要获取标题包含该单词的所有书籍,我使用以下代码:
for word in words:
books = books.filter(Q(title__icontains=word)
要获取作者姓名中包含该词的所有书籍,我使用以下代码:
for word in words:
authors = authors.filter(Q(name__icontains=word))
for author in authors:
for book_author in author.book_author_set.all():
book = Book.objects.get(id=book_author.book_id)
results.append(book)
有没有办法改进第二部分?