Django:将枚举用于多种语言表和选择

Django: using enums for multiple language tables and choices

如何在 Django 中使用枚举

制定问题也有助于产生答案。

部分原因是我想与任何对使用枚举和选择有类似问题的人分享这个答案,部分原因是询问解决方案是否出于任何原因不可取,或者其他问题会进一步发生(我想实施它在更大的范围内有几千行元组)。

下面的代码在我的项目中有两个用途。 1. 构建一个 table 可以 return 以所选语言回答 2. 启用包含多个选项(多列)的选择字段,例如在下拉列表中显示各种语言的目的。

from enum import Enum

class MasterEnum(Enum):
    # object            # en        # de
    Product_HORSE   =   'horse',    'pferd'
    Product_CAR     =   'car',      'auto'
    Place_GARAGE    =   'garage',   'garage'
    Place_STABLE    =   'stable',   'stall'

class YNNeutralEnum(Enum):
    Yes             = 'Yes',        'Ja'
    No              = 'No',         'Nein'
    Neutral         = 'Neutral',    'Neutral'

class Wessen(Enum):
    W1              = 'Horse',      'Pferd'
    W555            = 'Manbearpig', 'MannBärSchwein'

class Lang():
    # column position in enum table
    en = 0
    de = 1

def ChoiceEnum(enum, Lang):
    return tuple((x.name, x.value[Lang]) for x in enum)

# testing
choices = ChoiceEnum(Wessen, Lang.en)
print(choices)
choices = ChoiceEnum(MasterEnum, Lang.de)
print(choices)
print(choices[1])
print(Wessen.W555.name)
print(Wessen.W555.value)
print(Wessen.W555.value[1])