Как отобразить объекты по дням в шаблоне Django?

На данный момент у меня есть несколько журналов в базе данных, и я хочу отобразить их по дате в шаблоне Django. Как мне это сделать?

Вот как выглядит моя текущая система... enter image description here

Вот как я хочу, чтобы они выглядели.

JUNE 20, 2022
-------------
Nice songs! I'm listening to Massive Attack right now - 03:06 AM

JUNE 19, 2022
-------------
Just completed a sketch of the LOG IT! - 21:48 PM

I'm watching a movie right now. It's called Black Swan - 21:30 PM

Just had a pizza from Pagliacci! - 21:25 PM

models.py

class Logs(models.Model):
    log = models.CharField(max_length=100)
    created = models.DateTimeField(auto_now=False, auto_now_add=True)

views.py

class ViewLogs(ListView):
    template_name = 'logs_list.html'
    model = Logs
    form_class = LogForm

    def get_logs(self):
        logs = Logs.objects.all().order_by('-created')
        return logs

    def get_form(self):
        form = LogForm()
        return form
    
    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        context['query'] = self.request.GET.get('q', None)

        form = self.get_form()
        logs = self.get_logs()

        context['form'] = form
        context['logs'] = logs
    
        return context

logs_list.html

{% for log in logs %}
    <div class="row">
        <div class="col-lg-12">
            <p style="color:black;max-width:1000px;"> {{ log.log | safe}} </p>
            <small style="color:gray;" class="float-right"> {{ log.created | date:"F d, o - H:i A" | upper }} </small>
        </div>
    </div>
{% endfor %}

Перегруппировка - ваш друг в этом случае. Она позволяет объединять вещи по общим атрибутам, включая атрибуты, которые были отфильтрованы фильтрами шаблонов! Подробнее см. в docs. Что-то вроде:

{% regroup logs by created|date:"F d, Y"|upper as log_days %}
{% for day in log_days %}
  <div class="log-day">
    <h2 class="day-heading">{{ day.grouper }}</h2>
    {% for log in day.list %}
      <p>{{ log.log|safe }} - {{ log.created|date:" H:i A"|upper }}<p>
    {% endfor %}
  </div>
{% endfor %}
Вернуться на верх