7

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.

ePascoal
  • 2,362
  • 6
  • 26
  • 44
  • I think what you're looking for is something more like a `RelatedField` used as it is explained [here](http://stackoverflow.com/questions/17280007/retrieving-a-foreign-key-value-with-django-rest-framework-serializers) – TPOT94 Jul 22 '15 at 18:00
  • I'm getting same error please take a look: http://stackoverflow.com/questions/44038126/drf-serializer-fields-dictfield-attributeerror-str-object-has-no-attribute – Ranvijay Sachan May 18 '17 at 04:53

0 Answers0