我正在尝试使用|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.']
消息。我真的很难过,有人可以帮忙吗?
答案 0 :(得分:3)
我猜你的日期不是真正的日期,而是带有格式化日期的字符串。 | date过滤器需要一个datetime对象,而不是字符串。
答案 1 :(得分:1)
那很奇怪;以下工作正常从口译员。
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 %}
如果问题一致,则应反映在输出中。
答案 2 :(得分:0)
它是SQLite中的一个错误。参考https://code.djangoproject.com/ticket/11851