Как должен быть установлен queryset для связанных полей

У меня есть две модели book и chapter. Каждая книга может иметь много глав, поэтому модели выглядят следующим образом:

class Book(models.Model):
    title = models.CharField(max_length=100)

class Chapter(models.Model):
    title = models.CharField(max_length=100)
    book = models.ForeignKey("books.Book", on_delete=models.CASCADE)

а сериализаторы такие:

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ["title"]

class ChapterSerializer(serializers.ModelSerializer):
    book = serializers.PrimaryKeyRelatedField(queryset=Book.objects.all())
    class Meta:
        model = Chapter
        fields = ["title", "chapter_number", "text", "book"]

Вот мой вопрос: Можно ли установить queryset=Book.objects.all()) для связанного поля? Я имею в виду, что если количество книг увеличится, не будет ли проблемой запросить все книги, чтобы установить нужную книгу?

Сериализаторы могут быть вложенными.

class ChapterSerializer(serializers.ModelSerializer):
    book = BookSerializer(read_only=True)
    class Meta:
        model = Chapter
        fields = ["title", "chapter_number", "text", "book"]
Вернуться на верх