URL-адрес гнезда - Django -Rest-Framework не может разрешить URL для связи с гиперссылкой - PullRequest
2 голосов
/ 03 апреля 2020

Я столкнулся с проблемой при создании API для небольшого проекта.

Когда я пытался получить собственный URL для этажей. Это дает 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",
        ),
]

Он работает нормально. Может кто-нибудь помочь, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...