对django查询集进行排序和切片

时间:2017-03-19 16:19:47

标签: python django

我尝试进行查询,命令对象然后返回前100个。

Orders.objects.order_by('date', 'time')[:100]

但是我收到了这个错误。

Cannot reorder a query once a slice has been taken.

我该如何进行此查询?

编辑: 上下文

from django.shortcuts import render
from django_tables2 import RequestConfig
from .models import Order
from .tables import OrderTable

def order(request):
    table = OrdersTable(Orders.objects.order_by('date', 'time')[:100])
    RequestConfig(request).configure(table)
    return render(request, 'view_orders/index.html', {'table': table})

# app/tables.py
import django_tables2 as tables
from .models import Order

class OrderTable(tables.Table):
    class Meta:
        model = Order
        attrs = {'class': 'table', 'id': 'Order'}

1 个答案:

答案 0 :(得分:0)

Django-tables2给出了这个错误,它需要在查询上调用顺序,但是你传递的是已切片的列表。本reported issue解释了解决方法。您也可以仅使用doc中提供的示例中的渲染部分:

from django.shortcuts import render

def people(request):
    return render(request, 'people.html', {'people': Person.objects.all()})

表示模板:

{# tutorial/templates/people.html #}
{% load render_table from django_tables2 %}
{% load static %}
<!doctype html>
<html>
    <head>
        <link rel="stylesheet" href="{% static 'django_tables2/themes/paleblue/css/screen.css' %}" />
    </head>
    <body>
        {% render_table people %}
    </body>
</html>