Django-Rest框架,查找字段配置不正确

2024-10-01 15:35:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现错误了

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

以下是MWE:

在网址.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))
]

在模型.py公司名称:

^{pr2}$

在序列化程序.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'}
        }

在视图.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'

到底是怎么回事?我看不出很多类似的问题。在


Tags: namefrompyimportfieldincludelookupclass
1条回答
网友
1楼 · 发布于 2024-10-01 15:35:08

TaxonomyTermSerializer不为parent超链接提供lookup_field,也不为taxonomy提供。在

它应该与:

class TaxonomyTermSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = TaxonomyTerm
        fields = ('taxonomy', 'parent', 'name', 'description', 'slug')
        lookup_field = 'slug'
        extra_kwargs = {
            'url': {'lookup_field': 'slug'},
            'taxonomy': {'lookup_field': 'slug'},
            'parent': {'lookup_field': 'slug'},
        }

相关问题 更多 >

    热门问题