django rest框架序列化模型以返回其str表示

django rest框架序列化模型以返回其str表示,django,django-rest-framework,Django,Django Rest Framework,假设我的序列化程序看起来是这样的 class EntitySerializer(serializers.ModelSerializer): entity_instance = EntityInstanceSerializer(many=True) tags = EntityTagSerializer(many=True) class Meta: model = Entity fields = ('id', 'entity_instance

假设我的序列化程序看起来是这样的

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',)
我的标签模型如下所示:

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

    def __str__(self):
        return self.entity_tag_label
   ...
        "tags": [
            {
                "entity_tag_label": "SENDER"
            }
        ],
这很好,但我的回答如下:

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

    def __str__(self):
        return self.entity_tag_label
   ...
        "tags": [
            {
                "entity_tag_label": "SENDER"
            }
        ],
我的标记序列化程序是否可以简单地返回每个标记的字符串表示形式?那样我就可以

        "tags": [
             "Sender",
        ],
例如

可以使用。比如:

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')

啊!!太好了,谢谢。出于好奇,有可能让slugfield进行关系查找吗?类似于进行查询,例如Entity.objects.filter(Entity\u instance\u label='somelable')不确定我是否正确理解您的问题。但是,如果您想根据实体的标签过滤实体,那么不,您不能使用SlugRelatedField。序列化程序的目的不是过滤查询集。您可以阅读有关DRF中过滤的内容