Django:django-tables2 更改默认排序行为

Dir*_*uin 3 python django django-tables2

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

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

class OrderTable(tables.Table):
    order_date = tables.Column(order_by=("Order Date",))
Run Code Online (Sandbox Code Playgroud)

我的意见.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})
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*ain 5

只需'-'在列名前加前缀 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})
Run Code Online (Sandbox Code Playgroud)

order_by

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

另外,请参阅指定列的替代顺序