【问题标题】:Django REST Framework. How do I create two identical tags with different values?Django REST 框架。如何创建两个具有不同值的相同标签?
【发布时间】:2020-12-18 14:37:54
【问题描述】:

另一个我不明白如何解决的 Django REST Framework 问题? 有两个对象 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']

【问题讨论】:

    标签: django api django-rest-framework


    【解决方案1】:

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

    documentation 说:

    序列化器允许复杂数据,例如查询集和模型实例 转换为本机 Python 数据类型,然后可以很容易地 呈现为 JSON、XML 或其他内容类型。

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

    根据定义,模型中的字段必须是唯一的。如果您的序列化模型有两个字段都称为&lt;image&gt;,则反序列化过程将不知道您的哪一部分数据应该放在哪里。

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

    【讨论】:

    • 您好!感谢您的回复。我有一个目录站点,我正在准备一个 XML 文件以将目录对象传输到专门的留言板。要发送对象的所有图像,它们必须位于相同的 标记中,我在示例中对此进行了描述。是的,我知道必须有不同的标签。问题是如何使输出为 等,采用 形式
    • @I.Z. - 您是否尝试将图像存储在列表中并对其进行序列化?看看使用ListsSrializer,如果有必要你可以customise its behaviour
    猜你喜欢
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多