Django Rest Framework list from dict field

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.

+4

Source: https://habr.com/ru/post/1599130/


All Articles