4

如果字段应该full在api url中,有没有办法强制?

例如,现在您可以通过执行以下操作来选择字段是否已满:

class FooResource(ModelResource):
    foo = fields.ForeignKey(FooFooResource, 'foo', full=True)

是否可以通过执行以下操作来覆盖fullurl:

example.com/api/foo/?foo__full=false

或者

example.com/api/foo/?foo__full=true
4

2 回答 2

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

于 2012-06-08T19:09:04.013 回答
0

这是来自Github的答案:

目前没有内置的方法可以做到这一点。可以在脱水状态下进行检查,if bundle.request.GET.get('foo__full', True) == False然后将数据换出bundle.data. 虽然需要一点代码。

于 2012-02-28T16:00:06.230 回答