0

我试图在呈现 Django 模板时显示与外键关联的值。我在这个网站上模仿了其他答案,但无济于事。

我正在使用包 django-simple-history 来跟踪对数据库主表中所有记录的更改。该表有一个名为 history_user_id 的外键,它对应于 django 表 auth_user 中的 id。

根据此示例(在 django 模板中显示外键值),我应该能够使用以下代码显示已修改数据库的用户的用户名:

<ul>{% for item in history %}
     <li>{{item.history_user_id.username}}</li>
</ul>{% endfor %}

我的views.py中将历史定义为

def view_history(request,pk):
    project = Project.objects.get(pk=pk)
    history = project.history.all()
    return render(
        request,
        "projects/view_history.html",
        {
            "project": project,
            "history": history,
        }
    )

我创建的模板可以解释 item.history_user_id,我可以手动查看表 auth_user 到相应的用户名,但是当我尝试使用模板呈现用户名时,我得到一个空白。我错过了一步吗?

4

1 回答 1

0

如果我item.history_user_id没看错,就是进行更改的用户的 ID。这是一个整数,当然没有任何名为 的属性user。如果 django 模板遇到不存在的变量,它只会将其留空(并且不会引发错误)。因此,您在模板中什么也看不到。

因此,更改您的代码以获取用户而不是 user_id

<ul>{% for item in history %}
     <li>{{item.history_user}}</li>
</ul>{% endfor %}

这在文档中有所描述。

于 2020-01-20T06:51:31.880 回答