Django:将枚举用于多种语言表和选择
Django: using enums for multiple language tables and choices
如何在 Django 中使用枚举
- 快速创建选择列表
- 用于启用比对元组更多的选择,例如4 或 5 列
- 一种将枚举转换为元组的快速方法
- 为了在枚举的下拉列表中启用多种语言,当需要表格时,选择列表将被回收用于项目的其他部分
制定问题也有助于产生答案。
部分原因是我想与任何对使用枚举和选择有类似问题的人分享这个答案,部分原因是询问解决方案是否出于任何原因不可取,或者其他问题会进一步发生(我想实施它在更大的范围内有几千行元组)。
下面的代码在我的项目中有两个用途。 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])
如何在 Django 中使用枚举
- 快速创建选择列表
- 用于启用比对元组更多的选择,例如4 或 5 列
- 一种将枚举转换为元组的快速方法
- 为了在枚举的下拉列表中启用多种语言,当需要表格时,选择列表将被回收用于项目的其他部分
制定问题也有助于产生答案。
部分原因是我想与任何对使用枚举和选择有类似问题的人分享这个答案,部分原因是询问解决方案是否出于任何原因不可取,或者其他问题会进一步发生(我想实施它在更大的范围内有几千行元组)。
下面的代码在我的项目中有两个用途。 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])