2012-10-11 5 views
1

모델에서 선택 필드의 순서를 수동으로 변경하는 방법은 무엇입니까?주문 변경 ModelChoiceField

이 코드 :

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' 

어떤 아이디어가?

답변

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']) 

을하지만 :

+0

예, 알고 있습니다 ... 나는 이것에 대해 생각했지만,이 문제를 해결할 수는 없으며 단지 건너 뜁니다. – jkgh

+0

임의의 주문이 필요합니다. 이것은 임의의 순서를 구현하는 방법입니다. –