Django контекст Datetime уникальная дата - PullRequest
0 голосов
/ 19 января 2020

У меня в моей модели один DateTimeField, подобный этому

timestamp = models.DateTimeField(auto_now=True)

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

в моих представлениях,

def get_context_data(self, *args, **kwargs):
    context['date'] = Blog.objects.order_by().values('timestamp').distinct()
    return context

в моем html шаблоне:

 <form id="filter-form" method="GET" action="">

    <select name="dt" id="date">
        <option value="">Filter by Date</option>
        <option value="">All</option>
        {% for filter in date %}
        <option value={{filter.timestamp|date:"m-d"}}>{{ filter.timestamp|date:"d. F" }}</option> <!-- date:"Y-m-d" -->
        {% endfor %}
    </select>
    <input type="submit" value="Filter"><p></p>
</form>

А позже в представлениях я их кеширую вот так:

def get_queryset(self, **kwargs):
    querydate= self.request.GET.get('dt')
    start_date = "2020-"+querydate+" 00:00:00"
    end_date = "2020-"+querydate+" 23:59:59"
    print(start_date)
    #return Blog.objects.filter(Q(timestamp__icontains=querydate))
    return Blog.objects.filter(Q(timestamp__lte='start_date',timestamp__gte='end_date'))

В моем шаблоне я отображал одну и ту же дату несколько раз.

  • Январь
  • января
  • Январь

Как отобразить дату только один раз?

1 Ответ

0 голосов
/ 19 января 2020

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

Blog.objects.order_by().distinct('timestamp__date').values('timestamp__date')

Это преобразует поле даты и времени в дату, а затем вы можете получить значения одинаковыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...