0

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

我使用 Django 作为我的后端。

我可以将“变更类型”中的值翻译成英文单词而不是符号(~、- 和 +)吗?我正在使用 Django simple-history 来记录我的模型的更改并返回这些符号。我希望我的表格能够恭敬地阅读“已更改”、“已删除”和“已添加”来代替“~”、“-”和“+”。

我的桌子

这是 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>
4

1 回答 1

1

正如评论中已经提到的,只需在模板中更改{{ item.history_type }}为。{{ item.get_history_type_display }}

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

这实际上是 vanilla django 功能,并在模型实例参考中进行了说明。

对于每个设置了选项的字段,该对象将有一个get_FOO_display()方法,其中FOO是字段的名称。此方法返回字段的“人类可读”值。

为什么它适用于history_typedjango-simple-history 领域?

很简单:该history_type字段具有上述choices设置。我通过查看他们在 github上的源代码检查了这一点。

"history_type": models.CharField(
    max_length=1,
    choices=(("+", _("Created")), ("~", _("Changed")), ("-", _("Deleted"))),
),
于 2019-01-15T22:35:08.267 回答