Django的真实枚举。
项目描述
此包允许您在Django中使用真正的Python(PEP435样式)枚举。
django-enumfields2是hzdg/django-enumfields的一个友好的分支,仍然在维护。
安装
pip安装django-enumfields2
包含工具
EnumField, EnumIntegerField
from enumfields import EnumField
from enum import Enum
class Color(Enum):
RED = 'r'
GREEN = 'g'
BLUE = 'b'
class MyModel(models.Model):
color = EnumField(Color, max_length=1)
其他地方
m = MyModel.objects.filter(color=Color.RED)
EnumIntegerField与EnumField工作方式相同,但底层存储机制是IntegerField而不是CharField。
表单中的使用
通过调用formfield方法直接在Form中使用EnumField。
class MyForm(forms.Form):
color = EnumField(Color, max_length=1).formfield()
枚举
通常,您只需使用正常的PEP435样式枚举,但是django-enumfields还包括其自己的枚举版本,具有一些额外的功能。特别是,它提供了用于例如在管理下拉列表中使用的标签的智能定义。默认情况下,它将通过将您的常量名称首字母大写来创建标签。您可以使用嵌套的“Labels”类提供自定义标签。
from enumfields import EnumField, Enum # Our own Enum class
class Color(Enum):
RED = 'r'
GREEN = 'g'
BLUE = 'b'
class Labels:
RED = 'A custom label'
class MyModel(models.Model):
color = EnumField(Color, max_length=1)
assert Color.GREEN.label == 'Green'
assert Color.RED.label == 'A custom label'
EnumFieldListFilter
enumfields.admin.EnumFieldListFilter提供,允许在list_filter中使用枚举。
from enumfields.admin import EnumFieldListFilter
class MyModelAdmin(admin.ModelAdmin):
list_filter = [('color', EnumFieldListFilter)]
Django Rest Framework集成
EnumSupportSerializerMixin 混合类允许你在 DRF 序列化器中使用枚举。
# models.py
from enumfields import EnumField
from enum import Enum
class Color(Enum):
RED = 'r'
GREEN = 'g'
BLUE = 'b'
class MyModel(models.Model):
color = EnumField(Color, max_length=1)
# serializers.py
from enumfields.drf.serializers import EnumSupportSerializerMixin
from rest_framework import serializers
from .models import MyModel
class MyModelSerializer(EnumSupportSerializerMixin, serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码分发
django_enumfields2-3.0.2.tar.gz (6.7 kB 查看散列值)
构建分发
关闭
django_enumfields2-3.0.2.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 787dd61d132f73ffadbcfd74dc5caa339505f506b1ebb60da9bf0344eacf2115 |
|
MD5 | 69426382439799be26a6da537a904444 |
|
BLAKE2b-256 | 03e496daf09b637433a08dc720650d22bbb5a669d069a1afefd08bcc03eb71f3 |
关闭
django_enumfields2-3.0.2-py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 7ddcbdea6b97428f481f7191b53b110933be355f6d10656d59a4f886488a6cc4 |
|
MD5 | d9dc445862bdff1f42314082f908d393 |
|
BLAKE2b-256 | 77ddd83e5aa2feed816cba8099bb4893c32962fc55cc8da2ea63052768e7a8ef |