如何assemble 变量名在django 模板中使用来自JSONField 的数据?

How to assemble the variable name to use data from JSONField inside the Template in django?

我正在尝试使用 Django 框架为电视剧建立一个网站,我在 models.py 中输入了有关该节目的各种详细信息和一个 JSON 字段(名为 'episodes') 来定义每季的季数和剧集数。
示例:{ "1" : 15 , "2" : 25 , "3" : 23}
其中第 1 季包含 15 集,第 2 季包含 25 集,依此类推

当我尝试在正在播放该系列的模板中制作下拉菜单以便用户可以 select 观看该剧集时,问题就开始了: 此代码有效:

    Season 1
    {% with ''|center:show.episodes.1 as range %}
    {% for episode in range %}
        Episode {{forloop.counter}}
    {% endfor %}
    {% endwith %}

    Season 2
    {% with ''|center:show.episodes.2 as range %}
    {% for episode in range %}
        Episode {{forloop.counter}}
    {% endfor %}
    {% endwith %}

    Season 3
    {% with ''|center:show.episodes.3 as range %}
    {% for episode in range %}
        Episode {{forloop.counter}}
    {% endfor %}
    {% endwith %}

但如果我可以在彼此内部使用 2 个 for 循环,一个用于季节,一个用于剧集,这肯定会更清晰,但由于某些原因我无法做到。
我试过了:

{% for season in show.episodes %}
    Season {{forloop.counter}}
    {% for episode in show.episodes.forloop.counter %}
        Episode {{forloop.counter}}
    {% endfor %}
{% endfor %}

是的,show.episodes.forloop.counter 线阻止了我。
那绝对行不通,我试过:

{% for season in show.episodes %}
    Season {{forloop.counter}}
    {% for episode in show.episodes|add:forloop.counter %}
        Episode {{forloop.counter}}
    {% endfor %}
{% endfor %}

但这不起作用,因为我正在尝试将数字添加到 已经加载的 show.episodes,这是 JSON 的字典(错误)

我也试过像这个问题一样做一个自定义过滤器: 但看起来发生了同样的事情:将数字添加到 already loaded show.episodes 这是 JSON 的字典(错误)


我知道这看起来很容易,但是 2 天来我一直在尝试找出解决方案,但我做不到,所以如果可以,请帮助我。顺便说一句,我是个初学者 :)

show.episodes = { "1" : 15 , "2" : 25 , "3" : 23}

建议以这种方式遍历你的字典:

{% for season, series in show.episodes.items %}
    Season {{ season }}
    
           {% for _ in ''|center:series %}
                Episode {{forloop.counter}}
           {% endfor %}

{% endfor %}

不大的词典还可以。为了处理更大的字典,我建议使用自定义模板过滤器或标签。或者将处理逻辑移到视图函数中。

过滤器和标签文档 https://docs.djangoproject.com/en/3.2/howto/custom-template-tags/#custom-template-tags-and-filters