Переключить поля, чтобы быть полным в URL для вкусного пирога? - PullRequest
4 голосов
/ 27 февраля 2012

Есть ли способ принудительно задать, если поля должны быть full в URL-адресе?

Например, теперь вы можете выбрать, заполнено ли поле, выполнив:

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

Можно ли перезаписать full в URL, выполнив что-то вроде:

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

или

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

Ответы [ 2 ]

4 голосов
/ 08 июня 2012

Это код, чтобы заставить его работать:

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

0 голосов
/ 28 февраля 2012

Вот ответ от Github :

Нет встроенного способа сделать это прямо сейчас. Это можно сделать в дегидрате, проверяя if bundle.request.GET.get('foo__full', True) == False, а затем просто выгружая данные в bundle.data. Хотя немного кода.

...