私はこのモデルを持っています
class Book(models.Model):
title = models.CharField(max_length=255, blank=False, null=False)
class Like(models.Model):
user = models.ForeignKey(User, related_name="like_user", blank=False, null=False)
book = models.ForeignKey(Book, related_name="like_book", blank=False, null=False)
class Meta:
unique_together = ["user", "book"]
すべての本を取得して、現在のユーザーが 1 回のリクエストで各本を気に入っているかどうかを確認したい
Book.objects.select_related('like_book').all()
多くの結果のために機能しません
Book.objects.prefetch_related('like_book').all()
はキャッシュlike_set
されますが、このブックのすべてのいいね! が含まれます。このユーザーには 1 つだけではありません。
最後に、追加のフィールドが必要ですis_liked
books = Book.objects.MAGIC_FETCH('like_book', user=self.request.user).all()
books[0].is_liked