如何在 django 模板中重新组合?
Posted
技术标签:
【中文标题】如何在 django 模板中重新组合?【英文标题】:How to regroup in django template? 【发布时间】:2015-09-13 11:09:48 【问题描述】:我是 Django 新手,如何按日期创建列表?
示例:
-26 June 2015
episodio.es
episodio.es
episodio.es
-27 June 2015
episodio.es
episodio.es
型号:
class Episodio(models.Model):
es = models.ForeignKey(Tvserie)
network_USA = models.CharField(max_length = 50, null=True, blank=True)
ultimo_episodio_data_USA = models.DateTimeField(null=True, blank=True)
ultimo_episodio_numero_USA = models.CharField(max_length = 11, null=True, blank=True)
ultimo_episodio_nome_USA = models.CharField(max_length = 200, null=True, blank=True)
prossimo_episodio_data_USA = models.DateTimeField(null=True, blank=True)
prossimo_episodio_numero_USA = models.CharField(max_length = 11, null=True, blank=True)
prossimo_episodio_nome_USA = models.CharField(max_length = 200, null=True, blank=True)
class Meta:
verbose_name_plural = "Episodi"
观看次数:
def calendarioengita(request):
episodiusa = Episodio.objects.order_by('-prossimo_episodio_data_USA')
return render_to_response('CalendarioEngIta.html','episodiusa':episodiusa)
模板:
% regroup episodio by episodio.prossimo_episodio_data_USA|date:"d F Y" as prossimo_episodio_data_USA_list %
<ul>
% for prossimo_episodio_data_USA in prossimo_episodio_data_USA_list %
<li> prossimo_episodio_data_USA.grupper
% for item in prossimo_episodio_data_USA.list %
<span style="color: black">item.es</span><br>
% endfor %
</li>
% endfor%
</ul>
为什么错了? 我用了这个文档https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#regroup
【问题讨论】:
请把代码翻译成英文。 尝试将上下文'episodiusa':episodiusa
更改为反映您要显示的数据的内容,例如 `episodiusa:['date':data1, 'episodiusas':[e1, e2, e3] , ... ]
@Todor prossimo_episodio_data_USA is next_episode_date_USA
您当前的模板输出是什么,您期望得到什么?我可以看到您将grouper
拼错为grupper
- 它应该是 prossimo_episodio_data_USA.grouper
。
【参考方案1】:
我认为您没有正确使用regroup
标签。当您在by
子句中分组时,您应该直接使用field
而不是item.field
。试试这个:
% regroup episodes by next_episode_date_USA|date:"d F Y" as next_episode_groups %
<ul>
% for next_episode_group in next_episode_groups %
<li> next_episode_group.grouper
% for episode in next_episode_group.list %
<span style="color: black">episode.es</span><br>
% endfor %
</li>
% endfor%
</ul>
【讨论】:
以上是关于如何在 django 模板中重新组合?的主要内容,如果未能解决你的问题,请参考以下文章