首先——为什么你的代码失败。你超越
get_context_data
,然后对其进行无效调用(您没有通过
self
最后,所有这些都发生在类创建期间,而不是实例化期间,所以
获取上下文数据
当你在最后一行打电话时,他不知道你的请求。和
context_data
这和
queryset
.以下是您可以做的,以获得的分页内容
filtered
queryset:
class ProductsView(ListView):
paginate_by = 20
context_object_name = 'filtered'
template_name = 'urunler.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({
'renkler': Renk.objects.all(),
'bedenler': Varyasyon.objects.all(),
'katagoriler': Grub.objects.all(),
'checkedvar': self.request.GET.getlist('varyasyon_id__in'),
'checkedrenk': self.request.GET.getlist('renk_id__in'),
'checkedkat': self.request.GET.getlist('grub_id__in'),
})
return context
def get_queryset(self):
filtered = Stok.objects.all().order_by('-urun_id__kayit_tarihi','foto').distinct('urun_id__kayit_tarihi','foto')
checked_var = self.request.GET.getlist('varyasyon_id__in')
checked_renk = self.request.GET.getlist('renk_id__in')
checked_kat = self.request.GET.getlist('grub_id__in')
if checked_var:
filtered = filtered.filter(varyasyon_id__in=checked_var)
if checked_renk:
filtered = filtered.filter(renk_id__in=checked_renk)
if checked_cat:
filtered = filtered.filter(grub_id__in=checked_cat)
filtered = filtered.filter(urun_id__yayin=True, stok_adet__gt=0)
order = self.request.GET.get('order')
if order == "sale":
filtered = filtered.filter(indirim=True)
elif order == "tesettur":
filtered = filtered.filter(urun_id__tesettur=True)
return filtered