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

时间:2019-01-09 00:41:01

标签: django django-models enums multilingual multiple-choice

如何在Django中使用枚举

  • 快速创建选择列表
  • 用于启用比成对元组更多的选择,例如4或5列
  • 将枚举转换为元组的快速方法
  • 为了在枚举中启用多种语言,需要表时,将为项目的其他部分回收选择列表

1 个答案:

答案 0 :(得分:0)

制定问题也有助于得出答案。

部分地,我想与任何对使用枚举和选择有类似问题的人分享这个答案,部分地,问是否由于某种原因不建议该解决方案,否则其他问题将进一步发生(我认为应在以下方面实施)更大比例的数千行元组。

下面的代码在我的项目中有两个作用。 1.建立可以以所选语言返回答案的表格。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])