Как отображать даты создания только один раз - PullRequest
0 голосов
/ 15 октября 2018

Когда я создаю предмет, я автоматически добавляю дату создания.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, каждую дату один раз, как этого добитьсяenter image description here

1 Ответ

0 голосов
/ 15 октября 2018

Вы должны сначала преобразовать дату и время в дату, а затем написать форму, которая упорядочит ее по полю даты, а затем использовать отдельное значение для уникального получения всех дат.

Ваш код должен выглядеть примерно так:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...