django的真正python枚举。
django-enumfields的Python项目详细描述
这个包允许您在django中使用真正的python(PEP435样式)枚举。
安装
- pip install django-enumfields
包括的工具
EnumField,EnumIntegerField
fromenumfieldsimportEnumFieldfromenumfieldsimportEnum# Uses Ethan Furman's "enum34" backportclassColor(Enum):RED='r'GREEN='g'BLUE='b'classMyModel(models.Model):color=EnumField(Color,max_length=1)
其他地方:
m=MyModel.objects.filter(color=Color.RED)
EnumIntegerField的工作原理相同,但是底层的存储机制是 一个IntegerField,而不是一个CharField。
表单中的用法
调用formfield方法直接在Form中使用EnumField。
classMyForm(forms.Form):color=EnumField(Color,max_length=1).formfield()
枚举
通常,您只使用普通的PEP435样式的枚举,但是,django枚举字段 此外,它自己的Enum版本还包含了一些额外的铃声和口哨声。 也就是说,在管理中使用的标签的智能定义 下拉列表。默认情况下,它将通过标题大小写常量来创建标签 名字。可以为自定义标签提供嵌套的“标签”类。
fromenumfieldsimportEnumField,Enum# Our own Enum classclassColor(Enum):RED='r'GREEN='g'BLUE='b'classLabels:RED='A custom label'classMyModel(models.Model):color=EnumField(Color,max_length=1)assertColor.GREEN.label=='Green'assertColor.RED.label=='A custom label'
EnumFieldListFilter
enumfields.admin.EnumFieldListFilter是为了允许在 list_filter。
fromenumfields.adminimportEnumFieldListFilterclassMyModelAdmin(admin.ModelAdmin):list_filter=[('color',EnumFieldListFilter)]