为什么 Django 模板中的 user.is_superuser returns 字符串?

Why user.is_superuser returns string in Django template?

你好,我正在使用一个模板,我想在其中显示或隐藏 html 的块,具体取决于用户是否是超级用户。代码如下:

<h1> What user.is_superuser returns: {{ user.is_superuser }}</h1>
{% if user.is_superuser %}
        <h1>Superuser</h1>
{% else %}
        <h1>Mindundi</h1>
{% endif %}

这个想法是向超级用户显示 "Superuser" 否则 "mMindundi"。

但这是我得到的输出:

我一直在苦苦思索,找不到解决办法。我知道问题来自```“0”````是一个字符串而不是一个int,所以一切都被解析为True ...为什么会这样???我知道一个修复方法是将它解析为 int...但我想尽可能以其他方式修复它。

作为参考,我正在使用这些包:

asgiref==3.2.3
certifi==2019.6.16
chardet==3.0.4
defusedxml==0.6.0
Django==2.2.3
django-markdownx==2.0.28
django-model-utils==3.2.0
docxtpl==0.6.3
idna==2.8
Jinja2==2.10.1
lxml==4.3.4
Markdown==3.1.1
MarkupSafe==1.1.1
oauthlib==3.0.2
Pillow==6.1.0
PyJWT==1.7.1
python-docx==0.8.7
python-social-auth==0.3.6
python3-openid==3.1.0
pytz==2019.1
requests==2.22.0
requests-oauthlib==1.2.0
six==1.12.0
social-auth-app-django==3.1.0
social-auth-core==3.2.0
sqlparse==0.3.0
urllib3==1.25.3
xlrd==1.2.0

我找到问题所在了。我在今年夏天进行了手动迁移,修复了一些无法自动迁移的 table。在这个过程中的某个地方,我修改了 table auth_user 将一些列从整数更改为文本,一旦我替换一切都开始按预期工作。