with rest_framework pip3 instalar framework español coreapi django-rest-framework

django rest framework - rest_framework - Marco Django REST, obtén el objeto de la URL



pip3 install rest_framework (2)

Me pregunto si hay una manera limpia de recuperar un objeto de su URL con el marco de trabajo django. Seguramente debería haberlo, ya que parece ser lo que está sucediendo al usar HyperlinkedRelatedField .

Por ejemplo, tengo esta URL /api/comment/26 como una cadena. Desde mi punto de vista, ¿cómo puedo obtener la instancia de comentario con pk=26 ?

Por supuesto, podría volver a hacer el trabajo y trabajar en la cuerda, pero debe ser una mejor manera.

Muchas gracias.

EDITAR:

Así es como lo resolví al final:

resolve(''/api/comment/26/'').func.cls.model devolverá mi modelo Comment. resolve(''/api/category/1/'').kwargs[''pk''] devolverá el pk.

Lo que te da:

from django.core.urlresolvers import resolve resolved_func, unused_args, resolved_kwargs = resolve(''/api/category/1/'') resolved_func.cls.model.objects.get(pk=resolved_kwargs[''pk''])


Con las vistas basadas en clase, parece necesario algo como lo siguiente:

resolve(url).func.cls.serializer_class.Meta.model.objects.get( **resolve(url).kwargs)


Sospecho que su mejor opción sería mantener manualmente un mapa de modelos con patrones de URL, no muy diferente de un URLConf .

Si eso no balancea tu barco, podrías pasar el camino hacia la resolve .

Esto le dará un ResolverMatch en el que encontrará la func devuelta por la llamada as_view cuando configure sus URL.

El atributo __name__ de su función de vista será el de su clase de vista original. Haz algo como globals()[class_name] para obtener la clase en sí.

Desde allí acceda al atributo del model .

Espero que eso ayude. Como digo, es posible que desee asignar modelos a las URL usted mismo.