Django:Order_by多个字段

dan*_*nny 23 django django-orm

我以列表的形式获得order_by字段.我想用django orm通过多个字段order_by.列表如下:

orderbyList = ['check-in','check-out','location']
Run Code Online (Sandbox Code Playgroud)

我写的查询是这样的:

modelclassinstance.objects.all().order_by(*orderbyList)
Run Code Online (Sandbox Code Playgroud)

我在列表中所期待的一切都是动态的.我没有预先设定的数据集.有人可以告诉我如何用这个写一个django ORM吗?

bur*_*ing 51

尝试这样的事情

modelclassinstance.objects.order_by('check-in', 'check-out', 'location')
Run Code Online (Sandbox Code Playgroud)

你不需要.all() 这个

您还可以在模型类中定义排序

就像是

class Meta:
       ordering = ['check-in', 'check-out', 'location']
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我明白了。。我从其他链接得到的。modelclassinstance.objects.order_by(*orderbyList) (3认同)

Saw*_*han 12

在查询参数中传递订单列表,

例如:yourdomain/?order=location&order=check-out

default_order = ['check-in']  #default order
order = request.GET.getlist('order', default_order)
modelclassinstance.objects.all().order_by(*orderbyList)

Run Code Online (Sandbox Code Playgroud)