Я получаю ошибку
Не удалось разрешить URL для связи с гиперссылкой с использованием имени представления
«Систематика-деталь». Возможно, вам не удалось включить соответствующую модель в
Ваш API, или неправильно настроен атрибут lookup_field
на
это поле.
Вот MWE:
urls.py:
from django.contrib import admin
from django.urls import include, path
from rest_framework import routers
from testproj import views
router = routers.DefaultRouter()
router.register(r'taxonomy', views.TaxonomyViewSet)
router.register(r'taxonomy-term', views.TaxonomyTermViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include(router.urls))
]
models.py:
from django.db import models
class Taxonomy(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
slug = models.SlugField()
def __str__(self):
return self.name
class Meta:
verbose_name = "Taxonomy"
verbose_name_plural = "Taxonomies"
class TaxonomyTerm(models.Model):
taxonomy = models.ForeignKey(
"Taxonomy",
on_delete=models.CASCADE,
related_name="terms",
related_query_name="term"
)
parent = models.ForeignKey(
"self",
on_delete=models.CASCADE,
related_name="children",
related_query_name="child",
blank=True,
null=True
)
name = models.CharField(max_length=255,)
description = models.TextField()
slug = models.SlugField(unique=True)
def __str__(self):
return self.name
class Meta:
verbose_name = "Term"
verbose_name_plural = "Terms"
serializers.py:
from testproj.models import TaxonomyTerm, Taxonomy
from rest_framework import serializers
class TaxonomySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Taxonomy
fields = ('name', 'description', 'slug')
lookup_field = 'slug'
extra_kwargs = {
'url': {'lookup_field': 'slug'}
}
class TaxonomyTermSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = TaxonomyTerm
fields = ('taxonomy', 'parent', 'name', 'description', 'slug')
lookup_field = 'slug'
extra_kwargs = {
'url': {'lookup_field': 'slug'}
}
views.py
from rest_framework import viewsets
from testproj.models import Taxonomy, TaxonomyTerm
from testproj.serializers import TaxonomySerializer, TaxonomyTermSerializer
class TaxonomyViewSet(viewsets.ModelViewSet):
queryset = Taxonomy.objects.all().order_by('name')
serializer_class = TaxonomySerializer
lookup_field = 'slug'
class TaxonomyTermViewSet(viewsets.ModelViewSet):
queryset = TaxonomyTerm.objects.all().order_by('name')
serializer_class = TaxonomyTermSerializer
lookup_field = 'slug'
Что на земле происходит? Я просмотрел много похожих вопросов и не вижу, чтобы совершал какие-либо обычные ошибки.