python - 嵌套 URL - Django-Rest-Framework 无法解析超链接关系的 url
问题描述
我在为一个小项目创建 API 时遇到了一个问题。
当我试图获取楼层的自我网址时。它给ImproperlyConfigured at /api/v1/projects/d5471eb5-de66-478f-8ba8-e820ba4a0662/floors/864bfe52-157d-4667-98a1-279b552e64d6/
Could not resolve URL for hyperlinked relationship using view name "apis:floor-detail". You may have failed to include the related model in your API, or incorrectly configured the 'lookup_field' attribute on this field.
# url.py
urlpatterns = format_suffix_patterns(
[
path(r"projects/", views.ProjectView.as_view(), name="project-list"),
path(
r"projects/<project_id>/",
views.ProjectView.as_view(),
name="project-detail",
),
path(
r"projects/<project_id>/floors/",
views.FloorView.as_view(),
name="floor-list",
),
path(
r"projects/<uuid:project_id>/floors/<uuid:floor_id>/",
views.FloorView.as_view(),
name="floor-detail",
),
]
class FloorSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Floor
fields = ("url","floor_name", "elevation", "project_id")
extra_kwargs = {
"url": {
"view_name": "apis:floor-detail",
"lookup_field": "floor_id",
},
"project_id": {
"view_name": "apis:project-detail",
"lookup_field": "project_id"
}
}
我认为这可能是 url 设置问题,因为当我将 url.py 更改为
# url.py
urlpatterns = format_suffix_patterns(
[
path(r"projects/", views.ProjectView.as_view(), name="project-list"),
path(
r"projects/<project_id>/",
views.ProjectView.as_view(),
name="project-detail",
),
path(
r"projects/<project_id>/floors/",
views.FloorView.as_view(),
name="floor-list",
),
path(
r"floors/<uuid:floor_id>/",
views.FloorView.as_view(),
name="floor-detail",
),
]
它工作正常。有人可以帮忙吗?