一个django扩展,可以在choicefields上做出更像枚举的“选择”。
serious-django-enums的Python项目详细描述
https://github.com/serioeseGmbH/serious-django-enums
严肃的django枚举定义了一个类似枚举的类AutoEnum,它打算将模式组合在一起 定义django使用的选择字段,以及像大多数人知道的那样直观地使用枚举。
考虑一下您在choicefield上定义选择的示例,例如:
class SomeForm(forms.Form): ... STATE_CHOICES = ( ("ACTIVE", "active"), ("ENDED", "ended"), ) field = forms.ChoiceField(choices=STATE_CHOICES, default="ACTIVE")
这个包提供给您的是将它包装在一个类中,并将其作为类属性进行访问:
class States(AutoEnum): choices = ( ("ACTIVE", "active"), ("ENDED", "ended"), ) class SomeForm(forms.Form): field = forms.ChoiceField(choices=States.choices, default=States.ACTIVE)
它的优点是可以从代码的不同部分导入,而不直接绑定到表单,还提供了漂亮的属性访问,而不是像字典一样的键访问。
这个定义目前非常基本,但很适合我们的需要。
快速启动
使用pip安装软件包:
pip install serious-django-enums
导入serious_django_enums.AutoEnum并将其子类化,在类上定义choices属性。
在需要的地方使用autoenum子类的自动定义成员属性。