파이썬 Django QuerySet - order_by()
QuerySets를 정렬하려면 Django에서 order_by() 메서드를 사용한다:
결과를 이름의 알파벳 순으로 정렬한다:
template.html <!DOCTYPE html> <html> <body> <p>The queryset object:</p> {{ mymembers }} <p>Loop through the items:</p> <table border='1'> <tr> <th>ID</th> <th>Firstname</th> <th>Lastname</th> </tr> {% for x in mymembers %} <tr> <td>{{ x.id }}</td> <td>{{ x.firstname }}</td> <td>{{ x.lastname }}</td> </tr> {% endfor %} </table> </body> </html> |
views.py from django.http import HttpResponse from django.template import loader from .models import Member def testing(request): mydata = Member.objects.all().order_by('firstname').values() template = loader.get_template('template.html') context = { 'mymembers': mydata, } return HttpResponse(template.render(context, request)) # Check out template.html to see how the mymembers object # was used in the HTML code. |
위의 코드를 실행하면 아래 그림과 같다.
SQL에서 위의 문장은 다음과 같이 적는다:
SELECT * FROM members ORDER BY firstname; |
파이썬 Django QuerySet - order_by() 내림차순
기본적으로 결과는 오름차순(가장 낮은 값이 먼저)으로 정렬되며, 내림차순으로 방향을 변경하려면(가장 높은 값이 먼저), 빼기 기호(NOT)를 사용합니다(필드 이름 앞에 있음):
결과 이름 내림차순:
template.html <!DOCTYPE html> <html> <body> <p>The queryset object:</p> {{ mymembers }} <p>Loop through the items:</p> <table border='1'> <tr> <th>ID</th> <th>Firstname</th> <th>Lastname</th> </tr> {% for x in mymembers %} <tr> <td>{{ x.id }}</td> <td>{{ x.firstname }}</td> <td>{{ x.lastname }}</td> </tr> {% endfor %} </table> </body> </html> |
views.py from django.http import HttpResponse from django.template import loader from .models import Member def testing(request): mydata = Member.objects.all().order_by('-firstname').values() template = loader.get_template('template.html') context = { 'mymembers': mydata, } return HttpResponse(template.render(context, request)) # Check out template.html to see how th |
위의 코드를 실행하면 아래 그림과 같다.
SQL에서 위의 문장은 다음과 같이 적는다:
SELECT * FROM members ORDER BY firstname DESC; |
파이썬 Django QuerySet - order_by() 다중정렬
두 개 이상의 필드를 정렬하려면 order_by() 메서드에서 필드 이름을 쉼표로 구분한다:
결과를 먼저 성을 오름차순으로 정렬한 다음 id를 내림차순으로 정렬한다:
template.html <!DOCTYPE html> <html> <body> <p>The queryset object:</p> {{ mymembers }} <p>Loop through the items:</p> <table border='1'> <tr> <th>ID</th> <th>Firstname</th> <th>Lastname</th> </tr> {% for x in mymembers %} <tr> <td>{{ x.id }}</td> <td>{{ x.firstname }}</td> <td>{{ x.lastname }}</td> </tr> {% endfor %} </table> </body> </html> |
views.py from django.http import HttpResponse from django.template import loader from .models import Member def testing(request): mydata = Member.objects.all().order_by('lastname', '-id').values() template = loader.get_template('template.html') context = { 'mymembers': mydata, } return HttpResponse(template.render(context, request)) # Check out template.html to see how the mymembers object # was used in the HTML code. |
위의 코드를 실행하면 아래 그림과 같다.
SQL에서 위의 문장은 다음과 같이 적는다:
SELECT * FROM members ORDER BY lastname ASC, id DESC; |
이번 글에서는 파이썬 Django QuerySet order_by() 메소드를 활용하여 정렬에 대해서 살펴보았다.
order_by() 메소드는 오름차순 정렬, 내림차순 정렬에 대해서 살펴보았다. 여러 필드에 정렬하는 방법을 지정할 수 있는 다중 정렬에 대해서 실습해보았다.
꼭 손으로 눈으로 머리로 익히며 실습하기를 바란다.
모두 화이팅입니다.!!!
출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.
'파이썬 > 파이썬기본문법' 카테고리의 다른 글
파이썬 Django Static Files CSS 파일을 프로젝트에 추가 (1) | 2024.03.15 |
---|---|
파이썬 Django Static Files 추가 (0) | 2024.03.14 |
파이썬 Django QuerySet filter (2) | 2024.03.12 |
파이썬 Django QuerySet : Get Data (0) | 2024.03.11 |
파이썬 Django QuerySet (0) | 2024.03.10 |
댓글