일정을 날짜별로 출력하고 싶어서 날짜는 한번 출력하고 내용을 그 밑에 출력해야했다.
떠오른 순서대로 적어보자면
1. todo_list를 템플릿에서 커스텀 필터를 만들어서 처리하기
2. 날짜별로 따로 보내기
3. view에서 리스트로 나누기
4. view에서 딕셔너리로 나누기
등이었는데 구현은 1번과 4번만 해보았다. (자료구조를 배운 후 더 나은 방법을 찾을 것)
최종적으로 1번대신 4번으로 구현해 놓은 상태인데 템플릿에서 이것저것 하는거보단 view에서 많은 일을 처리해서 주는게 더 낫겟지 라는 생각이었다.
Python Django
# models.py
class Todo(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
deadline = models.DateTimeField()
content = models.TextField()
# view.py
todo_list = request.user.todo_set.order_by('deadline').all()
todo_list_deadline = defaultdict(list)
for todo in todo_list:
todo_list_deadline[todo.deadline].append(todo)
deadline_list = list(todo_list_deadline.keys())
HTML
{% if todo_list_deadline %}
{% for deadline in deadline_list %}
<div class="deadline">{{ deadline|date:'Y년 m월 d일 D' }}</div>
{% for todo in todo_list_deadline|get_item:deadline %}
<div class="todo_list">
<p class="todo">{{ todo.content }}</p>
</div>
{% endfor %}
{% endfor %}
{% endif %}
Split queryset or get multiple querysets by field instead of just ordering by field
I want to query a database in a way such that rather than just ordering by some field, I get a separate QuerySet (or dictionary, list, whatever) for each unique value of that field. Hopefully the ...
stackoverflow.com
'Framework > Django' 카테고리의 다른 글
| 글을 작성자만 보도록 만들기 in django (0) | 2022.03.04 |
|---|---|
| 시작하며 (0) | 2022.03.03 |