4

我正在尝试使用 django-tables2。我创建了一个显示日期列(由 创建timezone.now())的测试站点。默认情况下,日期按最旧->最新排序。如果我单击列标题,日期会以相反的顺序显示(所需的默认行为)。

我玩弄了这个order_by论点,但我做错了什么。我的表.py:

class OrderTable(tables.Table):
    order_date = tables.Column(order_by=("Order Date",))

我的意见.py:

def index(request):
    table = OrderTable(Order.objects.all())
    RequestConfig(request, paginate={"per_page": 10}).configure(table)
    return render(request, 'orders_app/index.html', {'table': table})

如何订购“订购日期”列,使其显示为最新->最旧?

4

2 回答 2

6

'-'只需在列名前加上前缀 a即可颠倒顺序。您可以order_by在初始化表时提供。

def index(request):
    table = OrderTable(Order.objects.all(), order_by="-order_date")
    RequestConfig(request, paginate={"per_page": 10}).configure(table)
    return render(request, 'orders_app/index.html', {'table': table})

order_by

默认排序。例如('name', '-age')。连字符-可用于为列名添加前缀以指示降序。

另请参阅为列指定替代排序

于 2013-11-04T16:49:40.763 回答
1

您可以像这样在查询集上设置排序:

table = OrderTable(Order.objects.order_by('-Order Date'))

或直接使用表对象:

table = OrderTable(Order.objects.all())
table.order_by = '-Order Date'
于 2013-11-04T17:19:05.907 回答