Часть ?ids=44174865,44151214,44049374
- это , а не часть пути URL-адреса, но строка запроса [wiki] .Вы не можете перейти к другому представлению, основанному на строке запроса.Содержимое строки запроса обрабатывается в request.GET
[Django-doc] , похожем на словарь объект.
Таким образом, вы должны обработать это в самом представлении,Например, вы можете отфильтровать представление списка, если есть значения ids
:
class CampaignsListView(ListView):
# ...
def <b>get_queryset</b>(self):
qs = super().get_queryset()
ids = request.GET.get('ids')
if ids:
try:
return qs.filter(id__in=map(int, ids.split(',')))
except ValueError:
return qs
return qs
Или вы можете проверить, содержит ли URL набор запросов, и затем позволить CampaignsDetailView
выполнить работу, например:
class CampaignsListView(ListView):
# ...
def <b>get</b>(self, request, *args, **kwargs):
if <b>'ids' in request.GET</b>:
return CampaignsDetailView.as_view()(request, *args, **kwargs)
return super().get(request, *args, **kwargs)
Хотя выглядит немного " некрасиво ".