我做了一个简单的待办事项列表。首先,我显示添加项目的所有日期的列表。
视图.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})
所有日期.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})
我有这个结果,显示所有项目,但我只需要从我链接的日期开始
如何显示-按链接中的日期筛选项目?
detail = Todo.objects.order_by('-created_at') return render(request, 'todo/detaildate.html', {'detail':detail})
通过这样做,您将把todo对象传递到django模板。如果只希望在模板中显示日期,则必须循环访问对象,并且只在detaildate.html中通过执行这些操作来显示日期。
{% for det in detail %} {{det.created_at}} {% endfor %}
如果要按日期筛选TODO,则必须按
todos = Todo.objects.filter(created_date=date)
我认为你必须使用:
def detailDate(request, date): detail = Todo.objects.filter(created_at=date) return render(request, 'todo/detaildate.html', {'detail':detail})
您希望筛选对象而不是对其排序。