每个日期列表python

时间:2015-09-30 01:32:51

标签: python django loops

我正在创建一个列表页面,我有这个概念。这是我的数据

text.match(/\[(.*)\]/)[1].split(", "); //And now you have an array with var1,var2..etc

我希望显示这样的输出

        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'}]

我正在考虑循环,但我想只显示一次日期而不重复它。

@Gocht这是结果。正如我注意到的那样。 2015年9月30日重复3次。

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

2 个答案:

答案 0 :(得分:0)

试试这个:

from django.db.models import F
Model.objects.values('Date').distinct().annotate(name=F('Name'), status=F('Status'))

修改

在模板中显示此功能的一个选项是usgin regroup模板标记,forloop显示索引编号:

{% 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>

答案 1 :(得分:0)

对列表进行排序的正确方法是使用sort函数,因为:

List.sort(key=lambda a: a['exec_date'])

在对列表进行正确排序后,您可以迭代列表项并根据需要显示它们。