【问题标题】:dehydrate is not working for django tastypie api脱水不适用于 django sweetpie api
【发布时间】:2016-08-18 05:03:33
【问题描述】:

在我的 API 中,我使用 def get_list(self, request, **kwargs): 方法。

现在我需要附加一个动态字段来提供一些额外的数据。

所以我尝试使用def dehydrate(self, bundle): 方法。

但在这种情况下,def dehydrate(self, bundle): 方法没有执行。同样,如果我删除或保留注释 def get_list(self, request, **kwargs): 方法,则 def dehydrate(self, bundle): 会执行。

在这种情况下,如何在我的 API 中附加一个额外的字段(动态字段)?

【问题讨论】:

  • 需要查看您的 Resource 类,至少需要 dehydrate 方法和 get_list 方法。
  • 这是我的代码:codeshare.io/qUzsJ
  • 好的...现在问题正好相反。这是太多的代码来挖掘。只是略读一下,你已经覆盖了很多方法,看起来你做的工作比你需要的要多得多。我试图让我的资源比这简单得多。我怀疑你重写了一个调用 dehydrate 的方法并用你自己的方法替换它。
  • 你是对的。我找到了一个参考“页面中的对象对每个对象都应用了 full_dehydrate,导致 Tastypie 将原始对象数据转换为端点支持的字段。”这里:django-tastypie.readthedocs.io/en/latest/resources.html 这意味着 **def get_list(self, request, **kwargs): ** 方法覆盖脱水。但是这里的解决方案是什么?

标签: django tastypie


【解决方案1】:

您覆盖了错误的方法,使用obj_get_list 提供数据而不是get_list

查看Resource类(resources.py),行号参考django-tastypie 0.13.3版本:

  • 1319:get_list 的定义,对第 1339 行中的包进行脱水
  • 1132:obj_get_list 的定义,引用注释Fetches the list of objects available on the resource,此方法在ModelResource 中被覆盖,并为 Django ORM 提供工作版本

您可能还想在这里阅读https://django-tastypie.readthedocs.io/en/latest/non_orm_data_sources.html,它解释了要覆盖的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2020-11-30
    • 2013-01-01
    • 2012-01-01
    相关资源
    最近更新 更多