我想要合并一个允许多个排序变量的排序功能。
我试图传递.order_by()函数,但是当我尝试包含多个字段时它仍然失败。我该怎么做?
if request.GET.get('size_sort')=='1':
def sorts():
sort='\'bedrooms\',\'bathrooms\''
return sort
posts=Post.objects.filter(**keyword_args).order_by(sorts())
这将返回回溯:
Invalid order_by arguments: ["'bedrooms','bathrooms'"]
答案 0 :(得分:21)
请参阅Django Book: Chapter 5 Models:
要按多个字段排序(第二个字段用于在第一个字段相同的情况下消除排序歧义),请使用多个参数:
也就是说,正确的调用是:
order_by('bedrooms', 'bathrooms')
在上下文中,与原始问题一致:
def sorts():
sort = ['bedrooms', 'bathrooms']
return sort
posts = Post.objects.filter(**keyword_args).order_by(*sorts())
快乐的编码。