728x90
기본적으로 django에서 쿼리셋 정렬할 때 아래와 같이 order by 사용하면 서 field 명을 적어주면 된다
Test.objects.order_by('name')
'abcd' -> 'bc' -> 'ccccccc'
하지만 한글 이름은 아래와 같이 가나다 순으로 정렬은 되지만 글자수를 우선으로 적용된다
'최영' -> '김아무개' -> '이무개'
데이터베이스 sql문으로는 collate "ko_KR.utf8" 를 붙여주면 되므로 django에서도 직접 함수를 만들어 정렬 해줘야 한다
my_order_func = Func(
'name',
function='ko_KR.utf8',
template='(%(expressions)s) COLLATE "%(function)s"')
Test.objects.order_by(my_order_func.asc())
출력하면 이 글에서 원하는 방식으로 정렬된다 ^^
'김아무개' -> '이아무개' -> '최영'
익숙함에 잘사용하지 않았던 django.db.models 모듈에 Avg, Func등 자주 사용하도록 해야겠다
728x90
'괴발개발 > Django' 카테고리의 다른 글
Django Rest Framework의 사용 방법과 전반적인 이해... (0) | 2022.12.25 |
---|---|
내가 자고 있는 순간에도 Django는 일을 한다! django crontab 사용방법 (0) | 2022.12.11 |
django management 명령어 만들기 (python manage.py) (0) | 2022.07.18 |
[Django] kakao social login allauth로는 안되는 증상 (0) | 2021.08.07 |
[Django] User Group을 이용하여 권한을 부여해보자 (minxin사용) (0) | 2021.08.04 |