Django – ORM values, values_list, list 결과

맨날 헷갈리는데 ORM Queryset 의 결과를 리스트로 받아 쓰는 경우가 많아 values(), values_list(), list()를 자주 쓰게 되는데 확실히 결과가 어떻게 다른지 알아보자. 말보단 코드를 짜서 결과를 보고 비교해 보는 게 확실히 이해하는데 크게 도움이 된다. result_by_orderitem = Result.objects.filter(starttime__year=s_year).order_by(“orderitem”, “-starttime”).distinct(“orderitem”).values(“orderitem”) print(result_by_orderitem) result_by_orderitem = Result.objects.filter(starttime__year=s_year).order_by(“orderitem”, “-starttime”).distinct(“orderitem”).values_list(“orderitem”) print(result_by_orderitem) result_by_orderitem = Result.objects.filter(starttime__year=s_year).order_by(“orderitem”, “-starttime”).distinct(“orderitem”).values_list(“orderitem”, flat=True) print(result_by_orderitem) result_by_orderitem = list(result_by_orderitem) print(result_by_orderitem) 예제로 짠 파이썬 코드의 결과를 보면, <QuerySet [{‘orderitem’: 278}, {‘orderitem’: 279}, {‘orderitem’: 280}, {‘orderitem’: 284}, {‘orderitem’: 287}, {‘orderitem’: 288}]><QuerySet [(278,), (279,), (280,), (284,), (287,), (288,)]><QuerySet…

Django template – list empty 처리

빈 리스트를 장고 템플릿에서 표현하는 방법은 아래 처럼 {% empty %} 구문을 활용하자! {% for item in itemlist %} {% if item.is_deleted == 1 %} {% else %} {% now “Y-m-d” as todays_date %} <tr class=”align-middle”> <td class=”white-space-nowrap ps-0″> <a href=”{% url ‘orderitem_view’ pk=item.id %}”>{{ item.id }}</a> </td> <td class=”align-middle” > <p class=”mb-0″>{{ item.product }}</p> </td> <td class=”align-middle text-end” > <p class=”mb-0″>{{ item.date_due | date:”m-d”}}</p> </td> <td class=”align-middle text-end” > <p class=”mb-0″>{{ item.quantity|intcomma }}</p> </td> <td class=”align-middle text-end” > <p…