Django Rest Framework - Could not resolve URL for hyperlinked relationship using view name “user-detail”

前端 未结 17 1406
感动是毒
感动是毒 2020-11-28 03:11

I am building a project in Django Rest Framework where users can login to view their wine cellar. My ModelViewSets were working just fine and all of a sudden I get this frus

17条回答
  •  星月不相逢
    2020-11-28 03:49

    Same Error, but different reason:

    I define a custom user model, nothing new field:

    from django.contrib.auth.models import (AbstractUser)
    class CustomUser(AbstractUser):
        """
        custom user, reference below example
        https://github.com/jonathanchu/django-custom-user-example/blob/master/customuser/accounts/models.py
    
        # original User class has all I need
        # Just add __str__, not rewrite other field
        - id
        - username
        - password
        - email
        - is_active
        - date_joined
        - method, email_user
        """
    
        def __str__(self):
            return self.username
    

    This is my view function:

    from rest_framework import permissions
    from rest_framework import viewsets
    from .models import (CustomUser)
    class UserViewSet(viewsets.ModelViewSet):
        permission_classes = (permissions.AllowAny,)
        serializer_class = UserSerializer
    
        def get_queryset(self):
            queryset = CustomUser.objects.filter(id=self.request.user.id)
            if self.request.user.is_superuser:
                queryset = CustomUser.objects.all()
            return queryset
    

    Since I didn't give queryset directly in UserViewSet, I have to set base_name when I register this viewset. This is where my error message caused by urls.py file:

    from myapp.views import (UserViewSet)
    from rest_framework.routers import DefaultRouter
    router = DefaultRouter()
    router.register(r'users', UserViewSet, base_name='customuser')  # <--base_name needs to be 'customuser' instead of 'user'
    

    You need a base_name same as your model name - customuser.

提交回复
热议问题