I'm trying to serialize two model fields to be provided as a list of dicts using Django REST Framework.
This is my model.py:
class Translation(models.Model):
translated_term = models.CharField(max_length=200)
translated_meaning = models.TextField()
language = models.CharField(max_length=200)
vocab = models.ForeignKey(Vocab, related_name='translates')
def __unicode__(self):
return '%s: %s' % ( self.language,self.translated_term)
view.py:
class VocabViewSet(viewsets.ModelViewSet):
queryset = Vocab.objects.all()
serializer_class = VocabSerializer
serializer.py:
class VocabSerializer(serializers.ModelSerializer):
...
translates= serializers.StringRelatedField(many=True)
...
class Meta:
model = Vocab
fields = (...,'translates',...)
Api result :
{
.....
"translates": [
"EN: Abyssal zone"
],
....
}
My question is how to set my translates as a list of dicts like this:
expected API Result:
{
.....
"translates": [
{EN: "Abyssal zone"}
],
....
}
I'm following the docs but i don't know if this is a write way. I tried to use serializers.DictFields like this:
class translateField(serializers.DictField):
child = serializers.CharField()
class VocabSerializer(serializers.ModelSerializer):
term_word = serializers.CharField(source='term.word',read_only=True)
kwdGroup = serializers.StringRelatedField()
translates = serializers.DictField(child=serializers.CharField())
class Meta:
model = Vocab
fields = ('uuid','id','term_word', 'meaning', 'source', 'translates','kwdGroup')
It occurs:
'RelatedManager' object has no attribute 'items'
I'm having troubles to find an approach to overcome this issue. Can you please give me your opinion about this issue? Any suggestion would be great.
Thanks.