4

fullフィールドがAPI 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
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 に答える