首页 > 解决方案 > 在 Django 模板 HTML 中访问元组中的第一个值

问题描述

我正在 Django 中创建一个网站,需要显示用户从选择字段中选择的值 - 它们 user_status存储在元组中。第一个和第二个值相同,但它们可以是“会员”或“专家”。

起初我在我的 HTML 中尝试了这个:

{{ user.user_status }}

结果是这样的:

('Member', 'Member')

我想要的是这样的:

Member

接下来,我尝试了

{{ user.user_status.Member }}

结果什么都没有:

最后我尝试了

{{ user.user_status.Member.0 }}

结果是第一个字符('Member', 'Member')

(

如何访问此元组的第一个或第二个值并将其显示在我的 HTML 中?

编辑1:

我的模型:

class CustomUser(AbstractUser):
    __USER_STATUS = [('Member','Member'), ('Expert','Expert')]

    user_status = models.CharField(
        max_length = 20,
        choices = __USER_STATUS,
        default = __USER_STATUS[0], # 'Member'
    )
    phone_number = models.CharField(null=True, blank=True, max_length=30)

编辑2:

奇怪的事情正在发生……

当我使用: {{ user.user_status }}

它显示('Member', 'Member')在由 Visual Studio 代码打开的 Internet 窗口中。

但它显示Member在 Firefox 和 Chromium 中。

为什么是这样?

为什么相同的代码在不同的浏览器中显示不同的结果?我知道有时网页的外观会发生这种情况,但这是内容的根本区别。

谢谢您的帮助!

标签: pythonhtmldjango

解决方案


我相信数据实际上不是一个元组,而是一个字符串。因此,我将制作元组并从模型中获取元组值,然后通过user_status_from_tuple.

模型.py

class CustomUser(AbstractUser):
    ....

    def user_status_from_tuple(self):
        user_status = eval(self.user_status)
        return user_status[0]

在您的模板中:

{{ user.user_status_from_tuple }}

推荐阅读