首页 > 解决方案 > 姜戈。休息框架。如何在 XML 中添加对象 ID?

问题描述

在 DRF 中,我创建了 XML,其中我需要将对象 id 分配给主标记它应该如下所示:

<offer internal-id="Object ID">
    <type></type>
    <category></category>
    <url></url>
</offer>

我有一个问题,offer tag因为我不知道如何将对象 ID 插入其中。嵌套标签生成完美,它们没有问题。这是我的views.py

class ZemlaXMLRenderer(XMLRenderer):
    root_tag_name = 'feed'
    item_tag_name = 'offer'

    def _to_xml(self, xml, data):
        if isinstance(data, (list, tuple)):
            for item in data:
                xml.startElement(self.item_tag_name, {'internal-id': 'Object ID'})
                self._to_xml(xml, item)
                xml.endElement(self.item_tag_name)
        super()._to_xml(xml, data)

理想情况下,输出应该是以下结构:

<offer internal-id="1">
    <type></type>
    <category></category>
    <url></url>
</offer>
<offer internal-id="2">
    <type></type>
    <category></category>
    <url></url>
</offer>

感谢!

标签: djangodjango-rest-framework

解决方案


我找到了我的问题的解决方案。结果很简单:

class ZemlaXMLRenderer(XMLRenderer):
    root_tag_name = 'feed'
    item_tag_name = 'offer'

    def _to_xml(self, xml, data):
        if isinstance(data, (list, tuple)):
            for item in data:
                xml.startElement(self.item_tag_name, {'internal-id': str(item['id'])})
                self._to_xml(xml, item)
                xml.endElement(self.item_tag_name)
        super()._to_xml(xml, data)

之后internal-id,我加了str(item ['id'])。现在每个offer标签都有自己的id


推荐阅读