Stupid.Fat.Cat
Stupid.Fat.Cat

Reputation: 11315

django rest framework serializing a model to return its str representation

Say that my serializer looks like so

class EntitySerializer(serializers.ModelSerializer):
    entity_instance = EntityInstanceSerializer(many=True)
    tags = EntityTagSerializer(many=True)

    class Meta:
        model = Entity
        fields = ('id', 'entity_instance', 'tags', 'note', 'source')

class EntityTagSerializer(serializers.ModelSerializer):
    class Meta:
        model = EntityTagLabel
        fields = ('entity_tag_label',)

My tags model looks like this:

class EntityTag(models.Model):
    entity_tag_label = models.CharField(max_length=255, unique=True)

    def __str__(self):
        return self.entity_tag_label

Now this is fine and all, but my response looks like this:

   ...
        "tags": [
            {
                "entity_tag_label": "SENDER"
            }
        ],

Is it possible for my tags serializer to simply return the string representation of each tag? That way I would just have

        "tags": [
             "Sender",
        ],

as an example

Upvotes: 2

Views: 2508

Answers (1)

Abhinav Desor
Abhinav Desor

Reputation: 397

You can use a SlugRelatedField to do this. Something like:

class EntitySerializer(serializers.ModelSerializer):
    entity_instance = EntityInstanceSerializer(many=True)
    tags = serializers.SlugRelatedField(
        slug_field='entity_tag_label',
        many=True,
        read_only=True
    )

    class Meta:
        model = Entity
        fields = ('id', 'entity_instance', 'tags', 'note', 'source')

Upvotes: 2

Related Questions