跳转到主要内容

Django字段,用于设置/获取django的新TextChoices/IntegerChoices枚举。

项目描述

django-choices-field

build status coverage PyPI version python version django version

Django字段,用于设置/获取django的新TextChoices/IntegerChoices枚举。

安装

pip install django-choices-field

用法

import enum

from django.db import models
from django_choices_field import TextChoicesField, IntegerChoicesField, IntegerChoicesFlag


class MyModel(models.Model):
    class TextEnum(models.TextChoices):
        FOO = "foo", "Foo Description"
        BAR = "bar", "Bar Description"

    class IntegerEnum(models.IntegerChoices):
        FIRST = 1, "First Description"
        SECOND = 2, "Second Description"

    class IntegerFlagEnum(IntegerChoicesFlag):
        FIRST = enum.auto(), "First Option"
        SECOND = enum.auto(), "Second Option"
        THIRD = enum.auto(), "Third Option"

    text_field = TextChoicesField(
        choices_enum=TextEnum,
        default=TextEnum.FOO,
    )
    integer_field = IntegerChoicesField(
        choices_enum=IntegerEnum,
        default=IntegerEnum.FIRST,
    )
    flag_field = IntegerChoicesFlagField(
        choices_enum=IntegerFlagEnum,
        default=IntegerFlagEnum.FIRST | IntegerFlagEnum.SECOND,
    )


obj = MyModel()
reveal_type(obj.text_field)  # MyModel.TextEnum.FOO
assert isinstance(obj.text_field, MyModel.TextEnum)
assert obj.text_field == "foo"

reveal_type(obj.integer_field)  # MyModel.IntegerEnum.FIRST
assert isinstance(obj.integer_field, MyModel.IntegerEnum)
assert obj.integer_field == 1

reveal_type(obj.flag_field)  # MyModel.IntegerFlagEnum.FIRST | MyModel.IntegerFlagEnum.SECOND
assert isinstance(obj.integer_field, MyModel.IntegerFlagEnum)
assert obj.flag_field == 3

注意:IntegerChoicesFlag需要python 3.11+才能正常工作。

许可证

本项目采用MIT许可证(更多信息请参阅LICENSE

贡献

请确保已安装poetry

使用以下命令安装依赖项

poetry install

使用以下命令运行测试套件

poetry run pytest

请随意fork项目,并提交包含新功能、纠正和翻译的pull请求。我会很高兴尽快合并它们并发布新版本。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。

源分发

django_choices_field-2.3.0.tar.gz (6.4 kB 查看哈希值)

上传时间

构建分发

django_choices_field-2.3.0-py3-none-any.whl (6.2 kB 查看哈希值)

上传时间 Python 3

支持者