Django — ошибка типа: объект типа «метод» не имеет len()

#python #html #django #django-views #django-queryset

Вопрос:

Я пытался добавить пейджинатор на свой сайт, используя какой-то онлайн-код, но я получаю эту ошибку, возвращающую len(self.object_list) Ошибка типа: объект типа «метод» не имеет len()

Views.py

образец def(запрос):

 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 )  

Models.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  

введите описание изображения здесь

Ответ №1:

Вам нужно позвонить .all() , иначе это ссылка на метод, поэтому вы работаете с:

 # call .all() ↓↓ wallpapers = Wallpaper.objects.all() 

Причина, по которой вам нужно вызвать это, заключается в том, что Paginator ожидает чего-то, что можно повторять и имеет длину, например, список или QuerySet .