Django-tastypie - 如何生成自定义的xml

时间:2012-03-13 18:19:44

标签: tastypie

我在tastypie中有一个ModelResource,用于具有id和名称的简单模型。

XML输出如下所示。但我想用我的模型名称代替“对象”。我似乎无休止地在如何解决这个问题上挣扎 - 对此有什么快速帮助?万分感谢 - 真的!

<response>
  <objects type="list">
    <object>
      <id>1</id>
      <name>foo1</name>
      <resource_uri> blah </resource_uri>
    </object>
    <object>
      <id>2</id>
      <name>foo2</name>
      <resource_uri> blah </resource_uri>
    </object>
  </objects>
</response>

1 个答案:

答案 0 :(得分:3)

您可以尝试重载Resource类的“alter_list_data_to_serialize(...)”方法。正如文档字符串所说:

  

在序列化之前改变列表数据的钩子&amp;发送给用户。

     

用于重组/重命名将要发送的内容。

这就是你改变“数据”的地方,这些数据在转换成XML并发送给用户后不久就会发生。

这样的事情应该让你前进:

def alter_list_data_to_serialize(self, request, data):
    #self.object_class.lower() is the name you'd like instead of "objects"
    data = { self.object_class.lower() : [ element for element in data[ 'objects' ] ] }
    return data

我没有对此进行测试,但我正在使用此方法来改变我的回复看起来如何成功。