DRF ImproperlyConfigured: Не удалось разрешить URL-адрес для гиперссылки на отношения

Я искал много подобных вопросов здесь на stackoverflow и пробовал разные вещи, но ничего не помогло мне решить эту проблему. Возможно, кто-то заметит ошибку в моем коде, которую я не вижу. В общем, у меня есть ModelViewSet, и сначала я использовал ModelSerializer, и он работал просто отлично. Затем я подумал, что было бы удобно добавить url в мой сериализатор и поэтому я поместил HyperlinkedIdentityField в мой сериализатор и получил эту ошибку. Затем я попытался переключиться с ModelSerializer на Hyperlinked и все равно возникла эта ошибка. Вот код:

Serializer

from rest_framework.serializers import HyperlinkedModelSerializer, ModelSerializer, HyperlinkedIdentityField
from .models import Product, ProductCategory, Brand
    class ProductSerializer(HyperlinkedModelSerializer):
        url = HyperlinkedIdentityField(view_name='products:product-detail', lookup_field='pk')
    
        class Meta:
            model = Product
            fields = ('id', 'url', 'name', 'category', 'brand', 'price', 'units_in_stock',
                      'units_on_order', 'reorder_point', 'discontinued')

Viewset

class ProductViewSet(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]

Urls

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from products import views


app_name = 'products'
router = DefaultRouter()
router.register(r'products', views.ProductViewSet, basename='products')
router.register(r'categories', views.ProductCategoryViewSet, basename='categories')
router.register(r'brands', views.BrandViewSet, basename='brands')

urlpatterns = [
    path('', include(router.urls)),
]

Модель

class Product(models.Model):
    name = models.CharField(max_length=255)
    category = models.ForeignKey('ProductCategory', on_delete=models.DO_NOTHING)
    brand = models.ForeignKey('Brand', on_delete=models.DO_NOTHING, blank=True, null=True)
    price = models.FloatField()
    units_in_stock = models.IntegerField()
    units_on_order = models.IntegerField()
    reorder_point = models.IntegerField()
    discontinued = models.BooleanField(default=True)

    def __str__(self):
        return str(self.name)

    def get_absolute_url(self):
        return reverse('products:product-detail', kwargs={'pk': self.pk})
Вернуться на верх