Py学习  »  Django

按日期筛选项目(Django)

karaname • 4 年前 • 741 次点击  

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

  • 视图.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 %}
    

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

如何显示-按链接中的日期筛选项目?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38562
 
741 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Sreehari S
Reply   •   1 楼
Sreehari S    5 年前
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)
Ghazaleh Kharadpoor
Reply   •   2 楼
Ghazaleh Kharadpoor    5 年前

我认为你必须使用:

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

您希望筛选对象而不是对其排序。