过滤日期中的项目(Django)

时间:2018-10-31 11:29:38

标签: django

我做了一个简单的待办事项清单。首先,我显示所有添加项目的日期列表。

  • 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 %}
    

enter image description here

尝试创建一种方法,该方法可以按我单击的日期过滤项目

  • views.py(详细日期)

    def detailDate(request):
       detail = Todo.objects.order_by('-created_at')
       return render(request, 'todo/detaildate.html', {'detail':detail})
    

我得到这个结果,显示所有项目,但是我只需要从链接日期起

enter image description here

我如何显示-按链接中的日期过滤项目?

2 个答案:

答案 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)