1

如何从模型中手动更改选择字段中的顺序?

例如:

这段代码:

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'

有任何想法吗?

4

2 回答 2

1

您可以使用额外的

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() 方法或通过信号。

于 2012-10-11T21:12:01.047 回答
1

添加另一个描述您想要的排序的字段,并按它排序。

于 2012-10-11T21:07:05.603 回答