Получить отдельный объект в Modelviewset - PullRequest
0 голосов
/ 14 июля 2020

Я использовал CBV, ModelViewSet, но каким-то образом мой API продолжает показывать все объекты внутри, как я получаю из моего ModelViewSet один объект, основанный на моем артикуле? 1004 *

api / urls.py

sam_api_list = SamAPIViewSet.as_view({
'get': 'list'
})

sam_api_detail = SamAPIViewSet.as_view({
'get': 'retrieve'
})

urlpatterns = [
    url(r'sam', sam_api_list, name='api-sam'),
    url(r'sam/<int:pk>', sam_api_detail, name='api-sam-detail'),
]

sam / 1, он возвращает все мои объекты, я не уверен, что не так, у моего объекта есть имя, идентификатор, номер SKU и как мне изменить мое мнение, чтобы получить базу единственного объекта на моем артикуле, а не на моем идентификаторе?

Ответы [ 2 ]

0 голосов
/ 14 июля 2020
url(r'sam/<int:pk>', sam_api_detail, name='api-sam-detail'),
url(r'sam', sam_api_list, name='api-sam'),

на

path(r'sam/<str:pk>', sam_api_detail, name='api-sam-detail'),
path(r'sam', sam_api_list, name='api-sam'),

удалить

def get_queryset(self):
        return self.queryset

    def get_object(self):
        sku_id = self.kwargs['pk']
        return self.get_queryset().filter(id=sku_id)

и заменить lookup_field = 'pk' на lookup_field = 'sku'

0 голосов
/ 14 июля 2020

Ваши маршруты перевернуты. Попробуйте следующее:

urlpatterns = [
    url(r'sam/<int:pk>', sam_api_detail, name='api-sam-detail'),
    url(r'sam', sam_api_list, name='api-sam'),
]

Django выберет первое совпадающее выражение. Если r'sam 'выше r'sam / int: pk', тогда он выберет r'sam ', не переходя к следующей записи

...