我需要在我的模板中显示这样的内容:
6月11日
6月10日
我的观点:
def Inicio(request):
g = Gastos.objects.all()
return render(request, 'principal/gastos.html', {'g': g})
我的模特:
class Gastos(models.Model):
...
fecha = models.DateTimeField(auto_now_add=True, auto_now=False)
...
我需要按字段分组" fecha"来自Model,我不知道该怎么做。
修改 我使用了collections.defaultdict:
我的观点:
def Inicio(request):
g = Gastos.objects.all()
lista = defaultdict(list)
for gasto in g:
lista['%s %s' %(gasto.fecha.day, gasto.fecha.strftime("%B"))].append(gasto)
return render(request, 'principal/gastos.html', {'lista': lista})
如果我打印" lista"在python shell中:
defaultdict(<type 'list'>, {"12 June": [<Gastos: Gasolina>, <Gastos: mandado>], "13 June": [<Gastos: Ropa>]})
我得到了我想要的,但问题在于模板,我无法迭代每个对象。
我的模板:
{% for dia in lista %}
<h3>{{dia}}</h3>
{% for g in dia.items %}
<li>{{g.producto}}</li>
{% endfor %}
{% endfor %}
结果是html(没有数据):
6月12日
6月13日
答案 0 :(得分:0)
lista
是一个字典,因此我们可以自由地在字典上应用items
函数来获取键值对。所以代码应该是,
{% for key, value in lista.items %}
<h3>{{key}}</h3>
{% for g in value %}
<li>{{g.producto}}</li>
{% endfor %}
{% endfor %}