过滤DateField对象Django

时间:2014-02-25 08:06:06

标签: python django django-models django-templates

我已经在这个问题上阅读了大量类似的Stackoverflow,但我的问题似乎更具体。无论如何我都无法显示日期,但默认情况下。

以下是有问题的模型:

class Blog (models.Model):
    ...
    posted = models.DateField(db_index=True)

然后将其传递给模板,作为Blog.objects.all()中包含的对象的一部分:

def index(request):
    return render_to_response('index.html', {
        'categories': Category.objects.all(),
        'posts': Blog.objects.all()[:10:-1],
    })

所以目前在我的模板中,我可以通过在模板中编写以下内容来显示DateField信息,因为posted是对象的属性:

{% for post in posts %}
    {{ post.posted }}
{% endfor %}

如果我这样做,它会显示相当丑陋的日期:2014-02-24

如何更改此显示?

我已经尝试过的事情:

  • {{ post.posted|date:"D M j Y" }}显示为空
  • {{post.posted|date }}包含DATE_FORMAT = 'D M j Y'的settings.py也只显示为空
  • USEL10N = False USEL10N = True的各种组合......仍然只显示空白

1.6的文档使用“| date”过滤器听起来非常简单,但它只是在我的结尾。有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

我现在无法对此进行测试,但文档中的内容引起了我的注意。

documentation for the date template filter

  

如果value是日期时间对象(例如,datetime.datetime.now()的结果),则输出将是字符串'Wed 09 Jan 2008'。

documentation for the DateField model field表示该字段包含

  

日期,由datetime.date实例以Python表示。

可能是date模板过滤器没有将datetime.date实例作为其参数吗?尝试将博客模型的发布字段更改为DateTimeField,看看会发生什么。