3

我在tastepie 中有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>
4

1 回答 1

3

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

在列表数据被序列化并发送给用户之前更改列表数据的钩子。

对于将要发送的内容的重组/重命名方面很有用。

这就是您更改“数据”的地方,这些“数据”很快就会转换为 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

我没有对此进行测试,但我正在使用这种方法来改变我的响应看起来是否成功。

于 2012-03-16T20:56:47.757 回答