创建项目时,我会自动添加创建日期。 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,2018
和Oct.14,2018
,每个日期一次,如何达到这个结果?
答案 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()