我正在尝试使用django-tables2。我创建了一个显示日期列的测试网站(由timezone.now()
创建)。默认情况下,日期排序为Oldest-> Newest。如果单击列标题,日期将以相反的顺序显示(所需的默认行为)。
我已经使用了order_by
论证,但我做错了什么。我的tables.py:
class OrderTable(tables.Table):
order_date = tables.Column(order_by=("Order Date",))
我的views.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})
如何订购"订单日期"列,因此它显示为Newest-> Oldest?
答案 0 :(得分:4)
只需在列名前添加'-'
前缀即可撤销订单。您可以在初始化表格时提供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')
。连字符-
可用于为列名添加前缀以指示降序。
答案 1 :(得分:0)
您可以像这样设置查询集的排序:
table = OrderTable(Order.objects.order_by('-Order Date'))
或直接使用表格对象:
table = OrderTable(Order.objects.all())
table.order_by = '-Order Date'