Django фильтр подробного просмотра по другим полям, таким как isbn - PullRequest
0 голосов
/ 18 февраля 2020

Если у меня есть другое поле, например, ISBN, в книге, как мне отфильтровать это поле из django .views.generi c import DetailField

вот моя книга /urls.py код файла

urlpatterns = [
    path('',BookListView.as_view(), name="book_list"),
    path('<isbn>/',BookDetailView.as_view(), name="book_detail")
]

book / views.py

class BookDetailView(DetailView):
    template_name = "book/detail.html"
    def get_queryset(self,*args, **kwargs):
        print(self.kwargs['isbn'])
        return BookModel.objects.filter(isbn=self.kwargs['isbn'])

и ошибка:

Generi c подробный вид BookDetailView должен вызываться с объектом pk или слагом в URLconf.

1 Ответ

0 голосов
/ 18 февраля 2020

вы можете использовать isbn как slug

book / urls.py

urlpatterns = [
    path('',BookListView.as_view(), name="book_list"),
    path('<slug:isbn>/',BookDetailView.as_view(), name="book_detail")
]

book / views.py

class BookDetailView(DetailView):
    model = BookModel
    template_name = "book/detail.html"
    slug_field = 'isbn'
    slug_url_kwarg = 'isbn'
...