如何从模型手动更改选项字段中的顺序?
例如:
此代码:
ModelChoiceField(queryset=SomeModel.objects.order_by('SomeField'))
告诉我:
'a_somevalue'
'b_somevalue'
'c_somevalue'
'd_somevalue'
此代码:
ModelChoiceField(queryset=SomeModel.objects.order_by('-SomeField'))
告诉我:
'd_somevalue'
'c_somevalue'
'b_somevalue'
'a_somevalue'
但如何做到这一点:
'c_somevalue'
'a_somevalue'
'd_somevalue'
'b_somevalue'
任何想法?
答案 0 :(得分:1)
添加另一个描述所需顺序的字段,并按顺序排序。
答案 1 :(得分:1)
您可以使用extra:
q = Entry.objects.extra(select={'my_sort_field':
"some think like ___
FIND_IN_SET( left(somefield,1),'c,a,d,b') "})
q = q.extra(order_by = ['my_sort_field'])
但是,如果这是我的模型,我将创建一个用于排序操作的新字段,我会保留它覆盖save()方法或信号。