如何在 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 模板中重新组合?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 模板中执行此操作

Django 模板 - 通过字符串参数重新组合

如何替换重新“。”在 Django 模板 url 标签中

如何在 Django 模板中嵌套或联合使用两个模板标签?

Django 模板继承:如何阻止基础模板重新加载?

如何重新加载 Django 模板?