首页 > 解决方案 > Django REST 框架。如何创建两个具有不同值的相同标签?

问题描述

另一个我不明白如何解决的Django REST 框架问题?有两个对象image_1image_2

serializers.py中:

class someClass(serializers.ModelSerializer):
    image_1 = serializers.ImageField(source='image_1')
    image_2 = serializers.ImageField(source='image_2')
    class Meta:
        model = onlyimage
        fields = ['image_1', 'image_2']

在输出中,我得到:

<image_1>https://domain-name.com/media/image_1</image_1>
<image_2>https://domain-name.com/media/image_2</image_2>

我想要标签不被编号,如下例所示:

<image>https://domain-name.com/media/image_1</image>
<image>https://domain-name.com/media/image_2</image>

但是如果你在serializers.py中进行更改,当然会发生错误:

class someClass(serializers.ModelSerializer):
    image = serializers.ImageField(source='image_1')
    image = serializers.ImageField(source='image_2')
    class Meta:
        model = onlyimage
        fields = ['image', 'image']

标签: djangoapidjango-rest-framework

解决方案


看来您正在尝试使用序列化程序来生成 HTML,所以简短的回答是您不能以这种方式使用序列化。

文档说:

序列化器允许将复杂数据(例如查询集和模型实例)转换为原生 Python 数据类型,然后可以轻松地将其呈现为 JSON、XML 或其他内容类型。

虽然它说“......或其他内容类型”。序列化的使用是将您的模型转换为简单的数据流进行传输,然后,重要的是反序列化。

根据定义,模型中的字段必须是唯一的。如果您的序列化模型有两个都称为<image>反序列化过程的字段,则将不知道您的哪一点数据放在哪里。

如果没有更多关于您实际尝试使用模型做什么的信息,就很难提出另一种方法。


推荐阅读