是否将Tastype的url中的字段切换为完整?

2024-09-30 20:19:17 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以强制api url中的字段是full?在

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

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

是否可以通过执行以下操作来覆盖url中的full

^{pr2}$

或者

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

Tags: 方法comapitrueurlfieldsfooexample
2条回答

这是使其工作的代码:

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

以下是Github的答案:

There isn't a built-in way to do this right now. It's possible to do in dehydrate, checking if bundle.request.GET.get('foo__full', True) == False then just swapping out the data in bundle.data. Takes a little bit of code though.

相关问题 更多 >