枚举类输出 django 的 choices 数据

枚举类输出 django 的 choices 数据

在 django 项目的 models 中难免会使用 choices,例如用户的状态等。而在其他地方需要筛选用户时,使用枚举类型更加直观方便,为了统一管理,希望只定义一个枚举类型。

定义枚举

from enum import Enum
class EnumBase(Enum):
"""枚举基类"""
def __new__(cls, *args):
"""将定义的属性拆分,不影响 value 的正常使用"""
obj = object.__new__(cls)
if len(args) > 1:
obj._value_ = args[0] # 实际值还是给 value 使用
obj.des = args[1]
else:
obj._value_ = args[0]
return obj
@classmethod
def to_tuple(cls):
return tuple([(_.value, _.des) for _ in cls])
class UserStatus(EnumBase):
"""用户状态"""
# 为了在 django 的 choices 中使用,属性值为一个元组
REGISTER = (0, '待审核')
NORMAL = (1, '正常')
DISABLE = (2, '不可用')
DELETE = (3, '删除')

可以直接通过UserStatus.to_tuple()获取到 choices 值,并且也可以正常使用UserStatus.NORMAL.value获取属性值1

posted @   守望人间  阅读(199)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示