1

request以下のコードは、 andkwargsが空であることを除いて正常に動作するようですget_object_list

class Target(object):

    def __init__(self, x=None, y=None):
        self.id = 1 #Since tastypie needs an id
        self.x = x
        self.y = y



class TargetResource(Resource):
    x = fields.IntegerField(attribute='x')
    y = fields.IntegerField(attribute='y')

    def get_object_list(self, request=None, **kwargs):
        targets = []
        print 'Got Request %s kwargs %s' %(request, kwargs) 
        target = self.obj_get(request, **kwargs)
        targets.append(target)

        return targets

    def obj_get(self, request=None, **kwargs):
       #Do something that requires the request and kwargs
       #Return an instance of Target


    def detail_uri_kwargs(self, bundle_or_obj):
        kwargs = {}

        if isinstance(bundle_or_obj, Bundle):
            kwargs['pk'] = bundle_or_obj.obj.id
        else:
            kwargs['pk'] = bundle_or_obj.id

        return kwargs

    def obj_get_list(self, request=None, **kwargs):
        # Filtering disabled for brevity...
        return self.get_object_list(request)


    class Meta:
        resource_name = 'target'
        allowed_methods = ['get']
        object_class = Target
        authorization = DjangoAuthorization()
        authentication = MultiAuthentication(BasicAuthentication(), SessionAuthentication())
4

2 に答える 2

1

**kwargs法線はそれらを取らないので、それらget_object_list()は取り込まれません。Tastypie/resources.pyから:def get_object_list(self, request): についてはrequest、次のようになります。

def get_object_list(self, request):
    if request is None:
        import pdb
        pdb.set_trace()
    # the rest of your get_object_list() code

デバッガーにドロップして、どのコードがリクエストを渡していないかを把握できるようにする必要があります。

于 2013-06-19T23:49:22.207 に答える