django从queryset创建日期列表

时间:2010-08-05 10:10:47

标签: django

我想根据数据库中的日期字段创建不同月/年值的列表。 所以例如在我的表中我有

id | date_added |标题

1 | 01/06/2010 | ????

2 | 02/09/2009 | ????

3 | 24/08/2009 | ????

4 | 15/06/2009 | ????

5 | 16/06/2009 | ????

此表格来自模型article

我如何创建一个列表:

['June 2009', 'August 2009', 'September 2009', 'January 2010']

3 个答案:

答案 0 :(得分:6)

我假设您需要['2009年6月','2009年8月','2009年9月','2010年1月']才能在模板中显示。如果是这样,那么你可以做类似

的事情

Article.objects.values_list('date_added', flat=True)

将为您提供这些日期的列表。然后,您可以使用date模板过滤器输出您想要的内容。

这样的东西
{% for item in your_dates_list_that_you_passed_to_the_template %}
    {{ item|date:"F Y" }}
{% endfor %}

<强> [编辑]

关于“不同”的要求,请参阅http://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct

答案 1 :(得分:3)

使用dates()过滤器最终解决了我的问题,尽管上面的两个答案都给了我想要的结果。

http://docs.djangoproject.com/en/dev/ref/models/querysets/#dates-field-kind-order-asc

答案 2 :(得分:0)

我将这样做的方法是映射一个函数来格式化查询集上的日期列。像这样:

queryset = Article.objects.filter()
print map(lambda article: article.date_added.strftime('%B %Y'), queryset)