【问题标题】:exclude some fields in tastypie post data排除tastepie post数据中的一些字段
【发布时间】:2013-04-15 08:02:59
【问题描述】:

最近我通过django-tastypie 为我的项目启动了一个 API。实际上我想在发布请求中排除一些字段要求。

假设我的模型有四个字段,并且所有字段都在django 模型中定义为require。但我想从 API 请求中接收其中两个,另外两个将由我的函数填充。

那么,我如何告诉tastypie 只接收这两个字段并跳过其他字段?

【问题讨论】:

标签: python django tastypie


【解决方案1】:

如果你想排除相同的字段,你可以通过在资源的元类中定义它来做到这一点,例如:

class MyResource(ModelResource):
     class Meta:
         excludes = (field1, field2)

并且每次都将排除此资源的这些字段。

但是,如果您只想在帖子中获取不同的字段,我的做法是通过覆盖脱水方法:

def dehydrate(self, bundle):
     if bundle.request.META['REQUEST_METHOD'] == 'POST':
         bundle.data = dict(my_field1=bundle.obj.my_func1(),
                            my_field2=bundle.obj.my_func2()
                            )
     return bundle

【讨论】:

  • excludes 不能保护您免受 POST 的影响。您仍然可以使用my_field1my_field2 创建新对象。 dehydrate 也应该是 hydrate
  • 如果排除不能保护您免受 POST 的影响,您如何保护资源不更新排除的字段?谢谢。
猜你喜欢
  • 2012-03-13
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
相关资源
最近更新 更多