Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HyperlinkedModelSerializer throwing ImproperlyConfigured error with auth.User in django rest framework

I have the following code using django rest framework.

urls.py

urlpatterns = [
    url(r'^portfolio1/', include('portfolio1.urls')),
    url(r'^admin/', admin.site.urls),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))]

portfolio1/urls.py

app_name = 'portfolio1'
urlpatterns = [
    url(r'^$', \
            views.api_root),
    url(r'^users/$', \
            views.UserList.as_view(), \
            name='user-list'),
    url(r'^users/(?P<pk>[-\d]+)/$', \
            views.UserDetail.as_view(), \
            name='user-detail'),
]
urlpatterns = format_suffix_patterns(urlpatterns)

portfolio1/serializers.py

from django.contrib.auth.models import User as AuthUser
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = AuthUser
        fields = ('id', 'username', 'url')

portfolio1/views.py

from django.contrib.auth.models import User as AuthUser
class UserList(generics.ListAPIView):
    queryset = AuthUser.objects.all()
    serializer_class = UserSerializer

class UserDetail(generics.RetrieveAPIView):
    queryset = AuthUser.objects.all()
    serializer_class = UserSerializer

@api_view(('GET',))
@permission_classes((permissions.AllowAny, ))
def api_root(request, format=None):
    return Response({
        'users': reverse('user-list', request=request, format=format)
    })

I am getting the following error.

ImproperlyConfigured: Could not resolve URL for hyperlinked relationship using view name "user-detail". You may have failed to include the related model in your API, or incorrectly configured the lookup_field attribute on this field.

I know what the error means but not sure why I am getting it. Has it got to do anything with the versioning of django rest framework(https://github.com/tomchristie/django-rest-framework/issues/2711)? I have ensured that I have not committed same mistake as HyperlinkedIdentityField returning error only on User model.

like image 245
Utkarsh Ohm Avatar asked Dec 01 '25 00:12

Utkarsh Ohm


1 Answers

Remove app_name = 'portfolio1' in portfolio1/urls.py .

like image 165
Junq Avatar answered Dec 02 '25 14:12

Junq



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!