I am trying to serialize two model fields that will be presented as a list of dicts using the 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 configure my translations as a list such as:
expected API Result:
{
.....
"translates": [
{EN: "Abyssal zone"}
],
....
}
I follow the docs , but I do not know if this is a way of writing. I tried using 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 happens:
'AssociatedManager' object has no attributes 'items'
I am having problems to find an approach to solving this problem. Could you give me your opinion on this issue? Any suggestion would be great.
Thank.