Получить данные, связанные с набором запросов - PullRequest
1 голос
/ 19 мая 2019

У меня есть следующие классы моделей:

class User(models.Model):
    ...
class Book(models.Model):
    ...
class WishListRelationship(models.Model):
    user = models.ForeignKey(User, db_index=True, blank=False, null=False, related_name='wishlist', on_delete=CASCADE)
book = models.ForeignKey(Book, blank=False, null=False, on_delete=CASCADE)
created_at = models.DateTimeField(auto_now_add=True)

Затем от пользователя я хотел бы получить набор запросов книг с помощью одного вызова базы данных.Если делать:

request.user.wishlist.select_related('book').all()

, тогда у меня есть набор запросов WishListRelationship, но я хотел бы получить только книги, поэтому я попытался сделать следующее:

Book.objects.annotate(wished_books_ids=request.user.wishlist.all().values_list('book_id', flat=True)).filter(id__in=F('wished_books_ids'))

Но яне достиг того, что я хочу, что получить список связанных книг в INNER JOIN.Как я могу это сделать?

Заранее спасибо

1 Ответ

2 голосов
/ 19 мая 2019

Вам не нужно делать такие комплексы, вы можете запросить с помощью:

Book.objects.filter(<b>wish_list_relationship__user=request.user</b>)
...