如何只显示一次创建日期

时间:2018-10-15 14:01:56

标签: python django sqlite

创建项目时,我会自动添加创建日期。 body被写到主体本身,将其保存在数据库中然后显示。并且创建时间会自动添加到created_at中。我需要显示所有项目的创建日期。

-models.py

from django.db import models

class Todo(models.Model):
   body = models.TextField()
   created_at = models.DateTimeField(auto_now_add=True)

-views.py

def all(request):
   date = Todo.objects.order_by('created_at')
   return render(request, 'todo/all.html', {'date':date})

在视图中,我尝试使用order_by并将其输出到模板中

-all.html

{% for date in date %}
   <h1>{{ date.created_at }}</h1>
{% endfor %}

然后我遇到这种情况。这实际上是我需要的,但是输出取决于每个日期下的项目数,我只需要打印一次日期,即Oct. 13,2018Oct.14,2018,每个日期一次,如何达到这个结果?enter image description here

1 个答案:

答案 0 :(得分:1)

您应该首先将datetime转换为date,然后编写一个orm,以按date字段对其进行排序,然后使用一个unique来唯一地获取所有日期。

您的代码应如下所示:

popular = Todo.objects.extra(select={'custom_dt': 'to_date(created_at)'}).values_list('custom_dt', flat=True).order_by('-custom_dt').distinct()

对于SQLite:

popular = Todo.objects.extra(select={'custom_dt': 'strftime("%d-%m-%Y", "created_at")'}).values_list('custom_dt', flat=True).order_by('-custom_dt').distinct()