python - django使用分页时出错

标签 python html mysql django

我正在尝试使用分页,但它给了我这个错误:

Traceback (most recent call last):
  File "/home/omega/venv/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/home/omega/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/omega/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/srv/tester/tables/views.py", line 44, in addview
    details = paginator.page(1)
  File "/home/omega/venv/local/lib/python2.7/site-packages/django/core/paginator.py", line 57, in page
    number = self.validate_number(number)
  File "/home/omega/venv/local/lib/python2.7/site-packages/django/core/paginator.py", line 46, in validate_number
    if number > self.num_pages:
  File "/home/omega/venv/local/lib/python2.7/site-packages/django/utils/functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/home/omega/venv/local/lib/python2.7/site-packages/django/core/paginator.py", line 91, in num_pages
    if self.count == 0 and not self.allow_empty_first_page:
  File "/home/omega/venv/local/lib/python2.7/site-packages/django/utils/functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/home/omega/venv/local/lib/python2.7/site-packages/django/core/paginator.py", line 84, in count
    return len(self.object_list)
TypeError: object of type 'RawQuerySet' has no len()

这是我用于表格分页的部分。 模型.py

def addview(request, table_id):
    table_name = Crawledtables.objects.get(id=table_id)

    tbl_details = "SELECT * FROM " + table_name.name
    tbl_detail = AllTables.objects.raw(tbl_details)

    paginator = Paginator(tbl_detail, 25)
    page = request.GET.get('page')

    try:
        details = paginator.page(page)
    except PageNotAnInteger:
        details = paginator.page(1)
    except EmptyPage:
        details = paginator.page(paginator.num_pages)

    crawled_tables = AllTablesFilter(request.GET, queryset=tbl_detail)
    return render(request, 'tables/table_list.html', {'tbl_name': table_name,
                                                      'details': tbl_detail,
                                                      'filter': crawled_tables,
                                                      'detail_page': details})

结束这是 html 的一部分,其中有我的分页代码。 表列表.html

{% if detail_page.has_other_pages %}
  <ul class="pagination">
    {% if detail_page.has_previous %}
      <li><a href="?page={{ detail_page.previous_page_number }}">&laquo;</a></li>
    {% else %}
      <li class="disabled"><span>&laquo;</span></li>
    {% endif %}
    {% for i in detail_page.paginator.page_range %}
      {% if detail_page.number == i %}
        <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
      {% else %}
        <li><a href="?page={{ i }}">{{ i }}</a></li>
      {% endif %}
    {% endfor %}
    {% if detail_page.has_next %}
      <li><a href="?page={{ detail_page.next_page_number }}">&raquo;</a></li>
    {% else %}
      <li class="disabled"><span>&raquo;</span></li>
    {% endif %}
  </ul>
{% endif %}

是因为我使用的是objects.raw()吗?

提前感谢您的帮助

最佳答案

更改此行

paginator = Paginator(tbl_detail, 25)

paginator = Paginator((list(tbl_detail)), 25)

关于python - django使用分页时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46318756/

相关文章:

python - 在 Python 中,识别电子邮件地址的一部分

html - 类匹配后选择列表中的所有元素

php - 从 iframe 中的表单获取数据

mysql - Tomcat 6 MySQL -> 奇怪的连接错误

python - 错误 :gpu_process_transport_factory. cc(1007) - 丢失 UI 共享上下文:在 Headless 模式下通过 ChromeDriver 初始化 Chrome 浏览器时

Python:使用 FFTW 加载 DLL 时找不到模块(OSError:[WinError 126])

python - 关于 textarea\r\n 或 python 中的\n

html - 倾斜的 Div - 仅右侧

php - 从多个表中加速 SELECT

mysql - LEFT JOIN 与 3 个表