Django Choices Field 2.3.0 | Coderz Repository

django-choices-field 2.3.0

Last updated:

0 purchases

django-choices-field 2.3.0 Image
django-choices-field 2.3.0 Images

Free

Languages

Categories

Add to Cart

Description:

djangochoicesfield 2.3.0

django-choices-field





Django field that set/get django's new TextChoices/IntegerChoices enum.
Install
pip install django-choices-field

Usage
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

NOTE: The IntegerChoicesFlag requires python 3.11+ to work properly.
License
This project is licensed under MIT licence (see LICENSE for more info)
Contributing
Make sure to have poetry installed.
Install dependencies with:
poetry install

Run the testsuite with:
poetry run pytest

Feel free to fork the project and send me pull requests with new features,
corrections and translations. I'll gladly merge them and release new versions
ASAP.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product: (if this is empty don't purchase this product)

Customer Reviews

There are no reviews.