У меня есть представление, настроенное на возврат списка книг пользователю, который извлекается из простой модели книги на основе текущего пользователя, вошедшего в систему. Однако у меня также есть модель ReadingSession, которая имеет отношение внешнего ключа и к Книге, и к Пользователю.
Когда я получаю книги для пользователя, я бы хотел, по крайней мере, вернуть список первичных ключей, которые я могу использовать для получения длины в моем клиенте.
Следующий код получит полный набор сеансов чтения в моем BookSerializer:
from rest_framework import serializers
from books.models import Book
class BookSerializer(serializers.ModelSerializer):
readingsession_set = serializers.PrimaryKeyRelatedField(
many=True, read_only=True)
class Meta:
model = Book
fields = ["id", "title", "author", "publisher",
"publish_date", "description", "category",
"language", "small_thumbnail", "thumbnail",
"readingsession_set"]
Однако, проблема в том, что он будет возвращать все чтения, независимо от того, принадлежит ли сеанс этому пользователю.
Я хотел бы иметь возможность отфильтровать это так, чтобы он возвращал только чтения чтения для текущего пользователя. Что-то в этом роде:
readingsession_set = serializers.PrimaryKeyRelatedField(queryset=ReadingSession.objects.filter(user=user), read_only=True)
Но я пробовал разные способы передачи пользователя (self.request.user
) из APIView, но ни один из них, похоже, не работает. Я попытался передать контекст и попытался передать дополнительные **kwargs
в __init__
, но ни один из них, похоже, не работает.
Есть ли способ достичь этого? Или я ошибаюсь?
Спасибо