Django-tastypie - как создать персонализированный XML - PullRequest
3 голосов
/ 13 марта 2012

У меня есть ModelResource в tastypie для простой модели с идентификатором и именем.

Вывод 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 Ответ

3 голосов
/ 17 марта 2012

Вы можете попробовать перегрузить метод "alter_list_data_to_serialize (...)" класса Resource.Как говорит строка документации:

Хук для изменения данных списка непосредственно перед тем, как они будут сериализованы и отправлены пользователю.

Полезно для реструктуризации / переименования аспектов того, что будет отправлено.

Так что это то место, где вы меняете «данные», которые вскоре после этого преобразуются в 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

Я не проверял это, но я использую этот метод, чтобы изменить то, как мои ответы выглядят успешно.

...