我做了一个简单的待办事项清单。首先,我显示所有添加项目的日期列表。
views.py
def allDates(request):
date = Todo.objects.extra(select={'custom_dt': 'strftime("%d-%m-%Y", "created_at")'}).values_list('custom_dt', flat=True).order_by('-custom_dt').distinct() # display all dates
return render(request, 'todo/alldates.html', {'date':date})
alldates.html
{% for dat in date %}
<a href="{% url 'detaildate' %}"><h1>{{ dat }}</h1></a> # link to see items added to this date
{% endfor %}
尝试创建一种方法,该方法可以按我单击的日期过滤项目
views.py(详细日期)
def detailDate(request):
detail = Todo.objects.order_by('-created_at')
return render(request, 'todo/detaildate.html', {'detail':detail})
我得到这个结果,显示所有项目,但是我只需要从链接日期起
我如何显示-按链接中的日期过滤项目?
答案 0 :(得分:0)
我认为您必须使用:
def detailDate(request, date):
detail = Todo.objects.filter(created_at=date)
return render(request, 'todo/detaildate.html', {'detail':detail})
您要过滤不按顺序排列的对象。
答案 1 :(得分:0)
detail = Todo.objects.order_by('-created_at')
return render(request, 'todo/detaildate.html', {'detail':detail})
通过这样做,您可以将待办事项对象传递给Django模板。如果只希望日期显示在模板中,则必须遍历对象,并仅在detaildate.html
中执行这些操作以显示日期。{% for det in detail %}
{{det.created_at}}
{% endfor %}
如果您尝试按日期过滤待办事项,则必须通过以下方式进行查询
todos = Todo.objects.filter(created_date=date)