Форматирование даты в шаблонах Django - PullRequest
1 голос
/ 08 сентября 2010

Я пытаюсь использовать фильтр |date и сталкиваюсь с некоторыми проблемами.Вот код, который выводит неформатированный путь:

{% for the_date in event.date_set.all %}
  <p>{{ the_date }}</p>
{% endfor %}

это выводит

<p>2010-10-31</p>
<p>2010-12-01</p>
...etc

Когда я изменяю код на

{% for the_date in event.date_set.all %}
  <p>{{ the_date|date:"F j, Y" }}</p>
{% endfor %}

, он выводит только:

<p></p>
<p></p>
...etc

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

ValidationError: [u'Enter a valid date in YYYY-MM-DD format.']

.Я действительно озадачен этим, кто-нибудь может помочь?

Ответы [ 3 ]

3 голосов
/ 08 сентября 2010

Я предполагаю, что ваши даты на самом деле не даты, а строки с отформатированными датами.Фильтр | date ожидает объект datetime, а не строку.

1 голос
/ 08 сентября 2010

Странно;Следующее работает отлично от переводчика.

In [18]: from datetime import datetime

In [19]: from django.template import Template, Context

In [20]: t = Template('date is {{ thedate|date:"F j, Y" }}')

In [21]: t.render(Context({'thedate': datetime.today()}))
Out[21]: u'date is September 7, 2010'

Возможно, стоит попробовать вышесказанное с вашей стороны, чтобы попытаться изолировать проблему.Если это не работает, то, возможно, вам нужно обновить версию django или что-то еще (маловероятно, я признаю).

Другая вещь - убедиться, что у вас нет опечатки где-либо.Например, если ваш цикл for просто возвращает NULL или пустые строки, это может быть причиной.Для проверки работоспособности попробуйте:

{% for the_date in event.date_set.all %}
  <p>{{ the_date }}</p>
  <p>{{ the_date|date:"F j, Y" }}</p>
{% endfor %}

Если проблема не устранена, это должно быть отражено в выводе.

0 голосов
/ 11 июня 2011

Это ошибка в SQLlite.см https://code.djangoproject.com/ticket/11851

...