2015-09-30 35 views
2

我正在创建一个列表页面,并且我有这个概念。这是我的数据每日日期列表python

 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循环,但我想只有一次显示日期,而不是重复。

@Gocht这是结果。正如我注意到的那样。 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 

回答

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> 
+0

嗨,谢谢...我更新了我的问题......这就是我的意思。现在我正在尝试搜索教程如何使用注释和独特的,因为你建议...谢谢 –

+0

是的,我帮助...这接近我所想象的。然而。这是我运行它的结果。我会更新我的问题,所以你会看到它...再次感谢@Gocht –

+0

我明白了!我刚刚添加.orderby('exec_date') –

0

正确的方法ORT列表与sort功能如此:该列表排序正确

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

之后,你就可以遍历列表项,并根据需要显示出来。