ine*_*ine 15 python django django-forms
我的问题与这篇文章几乎完全相同,只是我使用的是Python和Django而不是PHP.
任务是采取:
id date
1 2009-01-01 10:15:23
2 2009-01-01 13:21:29
3 2009-01-02 01:03:13
4 2009-01-03 12:20:19
5 2009-01-03 13:01:06
Run Code Online (Sandbox Code Playgroud)
并输出:
2009-01-01
1
2
2009-01-02
3
2009-01-03
4
5
Run Code Online (Sandbox Code Playgroud)
我可以通过循环排序日期并在我的python视图文件中将HTML输出到一个字符串来手动破解某些东西,但我想知道:有更好的方法使用Django模板或漂亮的Python功能吗?
小智 31
您可以使用重新组合和日期模板标签来解决此问题.
{% regroup object_list by start_date|date:"Y-m-d" as objects_by_day %}
{% for d in objects_by_day %}
### DO SOMETHING HERE
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
Tri*_*ych 15
itertools.groupby 是亲爱的亲爱的朋友:
import itertools
dates = [
(1,'2009-01-01 10:15:23'),
(2,'2009-01-01 13:21:29'),
(3,'2009-01-02 01:03:13'),
(4,'2009-01-03 12:20:19'),
(5,'2009-01-03 13:01:06'),
]
for key,group in itertools.groupby(dates, key=lambda x: x[1][:11]):
print key
for element in group:
print ' ', element
Run Code Online (Sandbox Code Playgroud)
上面的代码打印出以下内容:
2009-01-01
(1, '2009-01-01 10:15:23')
(2, '2009-01-01 13:21:29')
2009-01-02
(3, '2009-01-02 01:03:13')
2009-01-03
(4, '2009-01-03 12:20:19')
(5, '2009-01-03 13:01:06')
Run Code Online (Sandbox Code Playgroud)
在对较大数据集进行报告时itertools.group_by可能会太慢.在那些情况下,我让postgres处理分组:
truncate_date = connection.ops.date_trunc_sql('day','timestamp')
qs = qs.extra({'date':truncate_date})
return qs.values('date').annotate(Sum('amount')).order_by('date')
Run Code Online (Sandbox Code Playgroud)
如果OP可以在模板代码中使用python,这些都是合理的答案.(在那个帐户上,我赞成使用itertools.groupby()解决方案.)但是你不能在模板代码中使用python.在最好的情况下,您将编写执行此操作的模板标签.并且已经有一个模板标签可以做到这一点.
要在模板中的Django中进行分组,请使用regroup:
{% regroup people by gender as gender_list %}
<ul>
{% for gender in gender_list %}
<li>{{ gender.grouper }}
<ul>
{% for item in gender.list %}
<li>{{ item.first_name }} {{ item.last_name }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
示例取消了Django重新组合文档.重组是在Django可用0.96,1.0和1.1,至少.
如果你让我知道传递给模板的内容,我可以破解一个使用你的数据的例子.
此外,还有一篇博文,其中DjangoGrrl正是通过这个问题来解决的.
| 归档时间: |
|
| 查看次数: |
7778 次 |
| 最近记录: |