如何将嵌套模型显示为其第一个字段的列表

2024-05-08 03:39:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个多对多关系的模型。你知道吗

class MyModel(models.Model):
     value = models.CharField(max_length=255)
     tests = models.ManyToManyField(to='Test', null=True, related_name='models')


class Test(models.Model):
     name = models.CharField(max_length=255)

我试图实现的是将“MyModel”显示为其“value”字段的列表。 下面是我的序列化程序(也很简单):

class MyModelSerializer(serializers.Serializer):
    value = serializers.CharField()

    class Meta:
        model = models.MyModel
        fields = ('value',)


class TestSerializer(serializers.ModelSerializer):
    models = MyModelSerializer(many=True, read_only=True)

    class Meta:
        model = models.Test
        fields = ('name','models')

到目前为止,我得到了一个对象列表:

"name": "",
"models": [
    {
        "value": "question"
    }
]

有没有办法将“值”字段显示为字符串列表而不是对象列表?你知道吗

重要,我希望避免序列化方法或模型中的任何方法。有什么内在的方法吗?你知道吗

已更新 如果有人对这个解决方案感兴趣,我最终会重写MyModelSerializer中的“to\u表示方法”,并得到期望的结果。 这是一个序列化程序:

class MyModelSerializer(serializers.Serializer):

    class Meta:
        model = models.MyModel

    def to_representation(self, instance):
        return instance.value

Tags: to方法nametesttrue列表序列化value
1条回答
网友
1楼 · 发布于 2024-05-08 03:39:45

试试values_list方法。你知道吗

items = MyModel.objects.all().values_list('values', flat=True)

其结果将是一个字符串列表,表示存储在“values”字段中的值。你知道吗

相关问题 更多 >