Reputation: 554
I have 3 models book, language, book_language
. when i try to get list of books i am unable to get associated languages with django_rest_framework
models.py
class Book(models.Model):
title = models.CharField(max_length=200)
year = models.IntegerField()
class Language(models.Model):
language_name = models.CharField(max_length=100)
class Book_language(models.Model):
book = models.ForeignKey(Book)
language = models.ForeignKey(Language)
serializers.py
class BookLanguageSerializer(serializers.ModelSerializer):
class Meta:
model = Book_language
fields = ('id', 'language',)
class BookSerializer(serializers.ModelSerializer):
languages = BookLanguageSerializer(source='language_set')
class Meta:
model = Book
fields = ('id', 'title', 'languages')
desired ouput:
[{
id: 1,
title: 'some book 1',
languages: [
{
id: 1,
language: 'english'
},
{
id: 2,
language: 'chinese'
}
]
},
{
id: 2,
title: 'some book 2',
languages: [
{
id: 1,
language: 'english'
},
{
id: 2,
language: 'chinese'
}
]
}]
Instead of above output, i am only getting list of books without languages array like below.
[{
id: 1,
title: 'some book 1',
},
{
id: 2,
title: 'some book 2',
}]
Also guide where can i find better examples, I tried to read the DRF doc but its not beginner friendly.
Upvotes: 0
Views: 836
Reputation:
Try it:
class BookSerializer(serializers.ModelSerializer):
languages = BookLanguageSerializer(source='book_language_set')
Upvotes: 0
Reputation: 1084
Try passing many=True
like
class BookSerializer(serializers.ModelSerializer):
languages = BookLanguageSerializer(source='language_set', many=True)
Upvotes: 1