How should queryset be set for related fields

109 Views Asked by At

I have two models named book and chapter. each book can have many chapters, so models are like:

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)

and serializers are like:

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"]

So my question is here: Is it OK to set queryset=Book.objects.all()) for related field? I mean, if the number of books gets bigger, wouldn't be any problem to query all the books to set the right book?

1

There are 1 best solutions below

0
On

Serializers can be nested.

class ChapterSerializer(serializers.ModelSerializer):
    book = BookSerializer(read_only=True)
    class Meta:
        model = Chapter
        fields = ["title", "chapter_number", "text", "book"]