首页 > 解决方案 > 尝试在 Django 中进行分页时,X 没有 len

问题描述

我正在尝试在 Django 中构建分页,但它不起作用 - 数字移动但内容没有改变。我怎么解决这个问题?

文件models.py

class Board(models.Model):
    name = models.CharField(max_length=50, unique=True)
    description= models.CharField(max_length=50, unique=False)


class Topic(models.Model):
    title = models.CharField(max_length=100)
    created_by = models.ForeignKey(User, 
                  related_name='topics',on_delete=models.CASCADE,default=True)
    board = models.ForeignKey(Board, 
    related_name='topics',on_delete=models.CASCADE)
    created_dt = models.DateTimeField(default=timezone.now)

文件views.py

def boards_topic(request, id):
    board = get_object_or_404(Board, pk=id)
    paginator = Paginator(board, 3)
    page = request.GET.get('page')
    # board = paginator.get_page(page)
    try:
        page_list = paginator.page(page)
    except PageNotAnInteger:
        page_list = paginator.page(1)
    except EmptyPage:
        page_list = paginator.page(Paginator.num_pages)

    context = {'board':board, }
    return render(request, 'topics.html',context)

文件url.py

    path('boards/<int:id>/', views.boards_topic, name='boards_topic'),

有了这个,在尝试时/boards/1/,我面临错误

TypeError at /boards/1/

object of type 'Board' has no len()

Request Method:     GET
Request URL:    http://127.0.0.1:8000/boards/1/?page=1
Django Version:     2.2.3
Exception Type:     TypeError
Exception Value:    

object of type 'Board' has no len()

更新// 问题已解决。感谢所有帮助过我的人。

视图.py

def boards_topic(request, id):
board = get_object_or_404(Board, pk=id)
board_list = board.topics.all()
paginator = Paginator(board_list, 3)
page = request.GET.get('page')
try:
    board_list = paginator.page(page)
except PageNotAnInteger:
    board_list = paginator.page(1)
except EmptyPage:
    board_list = paginator.page(Paginator.num_page)
context = {
    'board':board,
    'board_list': board_list,
    'page': page,

}

return render(request, 'topics.html',context)

标签: pythondjango

解决方案


推荐阅读