The solution above did not work for me, however the following:
from django.core.urlresolvers import resolve
resolved_func, unused_args, resolved_kwargs = resolve('/api/category/1/')
resolved_func.cls().get_queryset().get(id=resolved_kwargs['pk'])
In addition, this solution uses a built-in set of queries of your kind, which may contain annotations or important filters.
Using HyperlinkedModelSerializer I really needed to do this with the full url. To do this, you first need to extract the path, resulting in:
import urllib.parse
from django.core.urlresolvers import resolve
def obj_from_url(url):
path = urllib.parse.urlparse(url).path
resolved_func, unused_args, resolved_kwargs = resolve(path)
return resolved_func.cls().get_queryset().get(id=resolved_kwargs['pk'])
source
share