我試圖使用一些在線代碼將分頁器添加到我的網站,但我收到此錯誤回傳 len(self.object_list) TypeError: object of type 'method' has no len()
視圖.py
定義樣本(請求):
WAllPAPER_PER_PAGE = 2 wallpapers = Wallpaper.objects.all page = request.GET.get('page', 1) wallpaper_paginator = Paginator(wallpapers, WAllPAPER_PER_PAGE) try: wallpapers = wallpaper_paginator.page(page) except EmptyPage: wallpapers = wallpaper_paginator.page(wallpaper_paginator.num_pages) except: wallpapers = wallpaper_paginator.page(WAllPAPER_PER_PAGE) context = {"wallpapers": wallpapers, 'page_obj': wallpapers, 'is_paginated': True, 'paginator': wallpaper_paginator} return render(request, "Wallpaper/sample.html", context )
模型.py
class Wallpaper(models.Model):
name = models.CharField(max_length=100, null=True)
size = models.CharField(max_length=50, null=True)
pub_date = models.DateField('date published', null=True)
resolution = models.CharField(max_length=100, null=True)
category = models.ManyToManyField(Category)
tags = models.ManyToManyField(Tags)
Device_Choices = [
('PC', 'pc'),
('mobile', 'mobile')
]
Devices = models.CharField(max_length=20,choices=Device_Choices, default= 'PC')
image = models.ImageField(upload_to='Wallpaper/Images/', default="")
def __str__(self):
return self.name

uj5u.com熱心網友回復:
您需要呼叫 .all(),否則它是對方法的參考,因此您可以使用:
# call .all() ↓↓
wallpapers = Wallpaper.objects.all()
您需要呼叫它的原因是因為它Paginator期望一些可迭代且具有長度的東西,例如串列或QuerySet.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/367087.html
標籤:Python html 姜戈 django-views django-queryset
上一篇:haskell教你一個haskell第4章示例令人困惑
下一篇:Django專案中的LIKE按鈕
