私は次のモデルを持っています(詳細は省略されています):
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)
2番目の部分を改善する方法はありますか?