如果字段应该在api url中full
,是否有办法强制使用?
例如,现在通过执行以下操作选择字段是否已满:
class FooResource(ModelResource):
foo = fields.ForeignKey(FooFooResource, 'foo', full=True)
是否可以通过执行以下操作覆盖网址中的full
:
example.com/api/foo/?foo__full=false
或
example.com/api/foo/?foo__full=true
答案 0 :(得分:4)
这是使其有效的代码:
class RelatedResource(ModelResource):
user = fields.ToOneField(UserResource, 'user')
class Meta:
queryset = Related.objects.all()
resource_name = 'related'
class UserResource(ModelResource):
related = fields.ToOneField(RelatedResource, 'related', full=False) # Default is false
class Meta:
queryset = User.objects.all()
resource_name = 'user'
def dehydrate(self, bundle):
show_full = bundle.request.GET.get('full', "false").lower() == "true"
if show_full:
old_full = self.related.full
self.related.full = True
bundle.data['related'] = self.related.dehydrate(bundle)
self.related.full = old_full
return bundle
我创建了一个要做出改变的要点:https://gist.github.com/2897326
答案 1 :(得分:0)
以下是Github:
的答案现在没有内置的方法可以做到这一点。脱水可以做,检查
if bundle.request.GET.get('foo__full', True) == False
然后只需交换bundle.data
中的数据。虽然需要一些代码。