【问题标题】:How to regroup in django template?如何在 django 模板中重新组合?
【发布时间】: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 }}

标签: django html django-models django-templates django-views


【解决方案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>

【讨论】:

    猜你喜欢
    • 2011-08-16
    • 1970-01-01
    • 2012-02-05
    • 2010-10-09
    • 2013-10-05
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多