在 HTML table 中替换值?

Substituting values in a HTML table?

我正在制作一个 HTML table 来显示已添加、删除和更改的盒子(在储藏室中)。标题表示框的所有者、发生的更改类型和框的新内容。

我的后端使用 Django。

我可以将 'Type of Change' 中的值翻译成英文单词而不是符号(~、- 和 +)吗?我正在使用 Django simple-history 记录对我的模型的更改,它 returns 这些符号。我希望我的 table 恭敬地阅读 'Changed'、'Removed' 和 'Added' 来代替 '~'、'-' 和 '+'。

这是view.py:

def dashboard(request):
    box_content_history = Box.history.all().order_by('-history_date')
    return render(request, 'main_app/dashboard.html', {""box_content_history":box_content_history})

HTML:

<table id="asset_changes_datatable">
    <thead>
        <tr>
            <th>Owner</th>
            <th>Type of Change</th>
            <th>Box Contents</th>
        </tr>
   </thead>
   <tbody>
   {% for item in box_content_history %}
        <tr>
            <td>{{ item.project_assigned_to }}</td>
            <td>{{ item.history_type }}</td>
            <td>{{ item.box_contents }}</td>
        </tr>
   {% endfor %}
   </tbody>
</table>

如评论中所述,只需将模板中的 {{ item.history_type }} 更改为 {{ item.get_history_type_display }}

这是什么魔法,它来自哪里?

这实际上是普通的 django 功能,在 Model instance reference 中有解释。

For every field that has choices set, the object will have a get_FOO_display() method, where FOO is the name of the field. This method returns the “human-readable” value of the field.

为什么它适用于 django-simple-history 的 history_type 字段?

非常简单:history_type 字段具有前面提到的 choices 集。我通过查看 github.

上的 their source 代码进行了检查
"history_type": models.CharField(
    max_length=1,
    choices=(("+", _("Created")), ("~", _("Changed")), ("-", _("Deleted"))),
),