在tastypie的网址中切换字段是否已满?

时间:2012-02-27 16:55:56

标签: python django tastypie

如果字段应该在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

2 个答案:

答案 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中的数据。虽然需要一些代码。