我想在Django中为订单列表创建分页.似乎所有代码都正确,但由于某种原因,当我进入网页时,显示的不是指向其他页面的链接,而是"Page of".

这篇文章的格式,因为这是我第一次发布一个问题,并注意到有7个对象的顺序,因此应该有一个页面道歉.

我的代码如下所示:

Models.py

class Order(models.Model):
    date = models.DateField('Date', null=True, blank=True)
    car = models.ForeignKey(Car, on_delete=models.SET_NULL, null=True)

    ORDER_STATUS = (
        ('p', 'Processing'),
        ('o', 'Ordered'),
        ('s', 'In service'),
        ('c', 'Completed'),
        ('t', 'Taken back by customer')
    )
    status = models.CharField(max_length=1, choices=ORDER_STATUS,
                              blank=True, default='p')

    @property
    def order_total_price(self):
        order_rows = self.order_row.all()
        total_price = sum(row.total_price for row in order_rows)
        return round(total_price)

    @property
    def order_rows(self):
        return ', '.join(str(el) for el in self.order_row.all())

    def __str__(self):
        return f'{self.car}'

Views.py

class OrderListView(generic.ListView):
    model = Order
    context_object_name = "orders"
    template_name = "orders.html"
    paginate_by = 5

urls.py

from django.urls import path, include
from . import views

urlpatterns = [
    path('index/', views.index, name="index"),
    path('cars/', views.cars, name='cars'),
    path('car/<int:pk>/', views.car_detail, name='car_detail'),
    path('orders/', views.OrderListView.as_view(), name='orders'),
    path('order/<int:order_id>/', views.order_detail, name='order_detail'),
    path('search/', views.search_results, name='search_results'),
    path('', views.index, name='index'),
]

和orders.html

{% extends 'base.html' %}

{% block header %}Orders{% endblock %}

{% block content %}

    <div class="pagination">
        <span class="step-links">
            {% if orders.has_previous %}
                <a href="?page=1">&laquo; First</a>
                <a href="?page={{ orders.previous_page_number }}">Previous</a>
            {% endif %}

            <span class="current">
                Page {{ orders.number }} of {{ orders.paginator.num_pages }}.
            </span>

            {% if orders.has_next %}
                <a href="?page={{ orders.next_page_number }}">Next</a>
                <a href="?page={{ orders.paginator.num_pages }}">Last &raquo;</a>
            {% endif %}
        </span>
    </div>

    <h2>List of Orders</h2>
    <ul>
        {% for order in orders %}
            <li>
                <a href="{% url 'order_detail' order.id %}">
                    {{ order.car.client }} - {{ order.car.car_model.brand }}
                    {{ order.car.car_model.model }} {{ order.car.license_plate }}<br>
                </a>
            </li>
            <br>
        {% endfor %}
    </ul>

{% endblock %}

推荐答案

类上Django doc表示上下文由分页器和Page_obj填充.因此,您可能希望引用这些iso订单(这基本上是模型的QuerySet).

根据您的示例:

  • 使用page_obj.has_previous iso orders.has_previous
  • 使用page_obj.previous_page_number iso orders.previous_page_number

以此类推.

Django相关问答推荐

管理器不能通过对象上的对象实例访问.保存()

Django Form初始值不在呈现上起作用

Django没有显示变量

如何从列中捕获数据并将其添加到下拉菜单中,以便表单填充另一个表

试图找出投票的总数,但无法理解它是如何在序列化器中完成的.我是Django的新手,它是如何完成的?

如何使更新记录在 Django 模型中传递信号?

Django: 无法将我的 comments 关联到特定产品

Django rest框架覆盖ViewSet中的page_size

Django - 站点匹配查询不存在

未捕获的类型错误:$(...).datepicker is not a function(anonymous function)

Django Admin - 覆盖自定义表单字段的小部件

ImportError:无法导入设置

Django中视图的多个decorator :执行顺序

在 Django 中注册用户的最佳方法

对 django 的 Http Delete 请求返回 301

在 Django 中测试different layers的最佳实践是什么?

Django 有 SmallIntegerField 的原因是什么?

ProgrammingError: 安装 Psycopg2 后,关系django_session不存在错误

为什么我的 Django 单元测试不知道安装了 MessageMiddleware?

如何更改 ModelForm 中所有 Django 日期字段的默认小部件?