【问题标题】:How to translate Enum string in django?如何在 django 中翻译枚举字符串?
【发布时间】:2020-04-02 08:32:39
【问题描述】:

所以我有一个具有状态字段的模型,为此我创建了一个 Enum 类,如下所示:

class Status(Enum):
    PENDING_APPROVAL = "PENDING-APPROVAL"
    PLANNED = "PLANNED"
    APPROVED = "APPROVED"
    CHANGED_PLAN = "CHANGED-PLAN"
    COMPLETED = "COMPLETED"
    CANCELED = "CANCELED"

然后添加这个类作为模型的选择:

status = models.CharField(
        choices=[(tag.value, tag.name) for tag in Status],
        max_length=20,
        verbose_name=pgettext("Order", "Status"),
        default=Status.PENDING_APPROVAL.value,
    )

一切正常,但问题是,一旦我单击下拉菜单从 Enum 类中选择一个选项,我希望将我的选择翻译成我网站的其他语言。

我找不到如何将Enum 的课程选择翻译成我需要的语言。

【问题讨论】:

  • 你在哪里展示这个? Django 管理员或自定义视图?在这两种情况下粘贴您的代码
  • 我在管理员和我的视图中使用它。 View 只是由一个 ModelForm 呈现,我在其中声明我的 Model 一个字段,就这么简单。

标签: django python-3.x translation


【解决方案1】:

使用标准的models.TextChoices,它也可以选择接受翻译:

from django.utils.translation import gettext_lazy as _

class Status(models.TextChoices):
    APPROVED = 'APPROVED', _('Approved')
    CANCELED = 'CANCELED', _('Canceled')

【讨论】:

    猜你喜欢
    • 2017-10-25
    • 1970-01-01
    • 2014-07-23
    • 2021-12-23
    • 2022-11-30
    • 2017-07-01
    • 1970-01-01
    相关资源
    最近更新 更多