[Django] 특정 리스트에 순서에 맞게 order_by(id 순서대로 정렬)
2023. 10. 10. 08:39ㆍPython/Django
이슈 상황
- 데이터베이스 쿼리는 반드시 사용자가 제공한 순서대로 가 아니라 데이터베이스에서 찾은 순서대로 개체를 반환한다.
- 조건으로 넣은 리스트 순서에 따라서 조회가 되게 하려면, 특정 리스트에 순서에 맞게 order_by를 하는 작업이 필요하다.
- 예시
- id 리스트 [1, 3, 2]를 넣으면 [object(1), object(3), object(2)] 순서로 조회가 되게 하는 경우이다.
Example code
- id_list의 1, 3, 2 순서대로 order_by를 진행
id_list = [1, 3, 2]
objects = Model.objects.filter(id__in=id_list).order_by(
Case(*[When(id=id, then=pos) for pos, id in enumerate(id_list)])
)
'Python > Django' 카테고리의 다른 글
[Django] Django model on_delete 종류 (0) | 2023.12.20 |
---|---|
simple history 이력 확인 (0) | 2023.10.16 |
Versioning decorator (0) | 2023.08.21 |
[Django] SerializerMethodField (0) | 2023.06.19 |
Django PhoneNumberField, phonenumbers (0) | 2023.04.26 |