-
Django queryset distinct and sortDjango 2021. 8. 2. 09:35
서론
기본적으로 Django의 정렬은 order_by로 시작하면 된다. 참조
그러나 필자의 상황은 이름 중복을 제거하면서 날짜 정렬를 해야하는 상황이었다.
그러나 django docs를 보면 distinct를 사용하려면 order_by가 같이 들어가는 상황이었다.
>>> Entry.objects.order_by('author', 'pub_date').distinct('author')
이렇게 사용하면 author, pub_date순서로 정렬되므로 날짜순서로 order_by가 불가능해진다.
그래서 중복 제거 후 따로 정렬하는 방법을 찾았다.
본론
중복제거를 한 후 python operator 라이브러리로 created_at을 얻어 정렬해주는 방법을 찾았다.
queryset = CrwalingModel.objects.order_by('enter_name').distinct('enter_name') queryset = sorted(queryset, key=operator.attrgetter('created_at'), reverse=True)
Reference
https://stackoverflow.com/questions/2412770/good-ways-to-sort-a-queryset-django
'Django' 카테고리의 다른 글
Django서버에 간단한 HTTPS Let's Encrypt 적용하기 (0) 2022.07.30 django.core.exceptions.SuspiciousFileOperation: Detected path traversal attempt (0) 2021.08.02 Django to AWS S3 업로드간 발생하는 I/O operation on closed file 해결방법 (0) 2021.06.21 Django OneToOneField로 연결된 model 자동 생성 (0) 2021.06.14 Django Filefield의 file에서 name 가져오기 (0) 2021.06.14