Python/Django - *args作为列表

5 投票
1 回答
873 浏览
提问于 2025-04-16 20:09

我正在使用.order_by()这个方法,但我想动态地构建排序的字段。问题是.order_by()需要接收一个字符串或者缓冲区。所以,我不能构建一个列表、元组或者对象来传递给这个函数。我该怎么做才能实现这个目标呢?

我想做的事情类似于:

field_list = []
for field in fields:
  field_list.append( field )
model.objects.all().order_by( field_list )

???

1 个回答

8

你可以使用 model.objects.all().order_by(*field_list) 这个写法。原因是 order_by 这个方法可以接受多个字符串参数,而不是多个字符串的列表。

你可以查看 djangobook的这一章,搜索 order_by,还有 这个链接 来了解参数的展开用法。

撰写回答