Как правильно передать orientdb @rid в качестве параметра для запроса DELETE в django rest framework? - PullRequest
0 голосов
/ 16 июня 2019

Я создаю метод удаления в DRF API, передавая параметры, но я не знаю, как правильно передать orientdb @ rid.

У меня есть отношение в orientdb, которое называется "worksat"в OrientDB Studio можно увидеть @rid с именем структуры, например #: , то есть: «# 33: 1» - это @rid записи отношения worksat.

enter image description here

Таким образом, мне нужно передать эту строку в моих отношениях API DRF URL:

http://127.0.0.1:8000/api/oworksat/

Но передать как:

http://127.0.0.1:8000/api/oworksat/#33:1

Я вижу запрос GET, с сообщением ниже (я ожидаю увидеть УДАЛИТЬ): Allow: GET, POST, HEAD, OPTIONS

Если передать простое число:

http://127.0.0.1:8000/api/oworksat/1

Затем я вижу запрос УДАЛИТЬ (очевидно, "1" не существует):

HTTP 404 Not Found
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS

api.py:

class OWorksAtViewSet(viewsets.ModelViewSet):

    queryset = graph.oworksat.query()
    serializer_class = OWorksAtSerializer
    permission_classes = [
        permissions.AllowAny
    ]

    def destroy(self, request, *args, **kwargs):
        print ("destroy")
        import pdb;pdb.set_trace()

urls.py:

from django.conf.urls import include, url
from rest_framework import routers
from .api import (OWorksAtViewSet)
from rest_framework_swagger.views import get_swagger_view

router = routers.DefaultRouter()
router.register('api/oworksat', OWorksAtViewSet, 'oworksat')

schema_view = get_swagger_view(title='Swagger Documentation')

urlpatterns = [
    url(r'^swagger/$', schema_view)
]

urlpatterns += router.urls

Интересно то, что при доступе из swagger api в методе DELETE, если я передаю идентификатор запроса "# 33: 1", он работает, вызов APIмой метод уничтожения и получение в kwargs: kwargs = {'pk': '#33:1'}.

enter image description here

Как я могу достичь этого поведения из DRF API?

...