Recursos nesteds de Tastypie: cached_obj_get () toma exactamente 2 argumentos (1 dado)

Estoy tratando de usar el ejemplo aquí: http://djangotastypie.readthedocs.org/en/latest/cookbook.html#nested-resources

por alguna razón me sale:

cached_obj_get () toma exactamente 2 argumentos (1 dado)

aunque claramente lo llamo con 2 argumentos (exactamente como en el ejemplo mencionado anteriormente. Este es mi código:

def prepend_urls(self): return [ url(r"^(?P%s)/(?P\w[\w/-]*)/feed%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('get_feed'), name="api_get_feed"), ] def get_feed(self, request, **kwargs): try: obj = self.cached_obj_get(request=request, **self.remove_api_resource_names(kwargs)) except ObjectDoesNotExist: return HttpGone() except MultipleObjectsReturned: return HttpMultipleChoices("More than one resource is found at this URI.") feed_resource = FeedItemResource() return feed_resource.get_list(request, p_id=obj.id) 

Lo siento por la confusión: hubo un cambio en la API para mejorar la autorización que cambió la firma para cached_obj_get de:

 def cached_obj_get(self, request=None, **kwargs): 

a

 def cached_obj_get(self, bundle, **kwargs): 

Este cambio es consistente en el futuro, y si necesita el objeto de request , está disponible como bundle.request , pero obviamente la documentación debe actualizarse.

Puedes construir un objeto de paquete con:

 basic_bundle = self.build_bundle(request=request) 

luego utilícelo como un argumento para cached_obj_get (vea el código fuente de Resource.get_detail como ejemplo):

 obj = self.cached_obj_get(bundle=basic_bundle, **self.remove_api_resource_names(kwargs)) 

El otro aspecto confuso si no está familiarizado con el modelo de objetos de Python es que los métodos siempre reciben al menos un argumento porque el primer argumento posicional es siempre la instancia del objeto o los argumentos de self y keyword no se incluyen en ese recuento, por lo que “1 dado” significa que el método solo recibió el argumento self posicional cuando esperaba self y bundle .