Python 按日期列出
我正在创建一个列表页面,我有这个概念。这是我的数据Python 按日期列出,python,django,loops,Python,Django,Loops,我正在创建一个列表页面,我有这个概念。这是我的数据 List = [ {'exec_date': datetime.date(2015, 9, 30), 'name': 'AAA', 'status': 'PE'}, {'exec_date': datetime.date(2015, 10, 29), 'name': 'BBB', 'status': 'DN'}, {'exec_date': datetime.date(2015, 9, 30), 'na
List = [
{'exec_date': datetime.date(2015, 9, 30), 'name': 'AAA', 'status': 'PE'},
{'exec_date': datetime.date(2015, 10, 29), 'name': 'BBB', 'status': 'DN'},
{'exec_date': datetime.date(2015, 9, 30), 'name': 'CCC', 'status': 'PE'},
{'exec_date': datetime.date(2015, 9, 30), 'name': 'DDD', 'status': 'DN'},
{'exec_date': datetime.date(2015, 9, 7), 'name': 'EEE', 'status': 'DN'},
{'exec_date': datetime.date(2015, 9, 30), 'name': 'FFF', 'status': 'NY'}]
我想显示这样的输出
2015-9-7
1. EEE, DN
2015-9-30
1. AAA, PE
2. CCC, PE
3. DDD, DN
4. FFF, NY
2015-10-29
1. BBB, DN
我正在考虑for循环,但我希望只显示一次日期,而不重复它
@这就是结果。正如我所注意到的。2015年9月30日重复3次
Sept. 30, 2015
1.Set Task Finished, PE
Oct. 29, 2015
1.New Activity for a Task, DN
Sept. 30, 2015
1.New Activity from a User, PE
2.New Activity from a User, DN
Sept. 7, 2015
1.New Activity for a Task, DN
Sept. 30, 2015
1.New Activity from a User, NY
试试这个:
from django.db.models import F
Model.objects.values('Date').distinct().annotate(name=F('Name'), status=F('Status'))
编辑
在模板中显示此项的一个选项是usgin模板标记,并显示索引号:
{% regroup List by exec_date as list_data %}
<ul>
{% for exec_date in list_data %}
<li>{{ exec_date.grouper }}
<ul>
{% for item in exec_date.list %}
<li> {{ forloop.counter }}.{{ item.name }}, {{ item.status }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
{%按执行日期将列表重新分组为列表数据%}
{列表数据%中的执行日期为%}
- {{exec_date.grouper}}
{exec_date.list%中项目的%
- {{forloop.counter}.{{item.name},{{{item.status}
{%endfor%}
{%endfor%}
对列表进行排序的正确方法是使用如下函数:
List.sort(key=lambda a: a['exec_date'])
列表正确排序后,您可以迭代列表项并根据需要显示它们。您好,谢谢。。。我更新了我的问题。。。这就是我真正的意思。现在,我正试图学习如何按照您的建议使用annotate和distinct。。。谢谢你是的我帮了你。。。这很接近我的想象。然而。这是我运行它时的结果。我会更新我的问题,让你看到它。。。再次感谢@GochtI,我明白了!!我刚刚添加了。orderby('exec_date')是的,我想您需要更改YOUR查询。