Real Python Enums for Django.
Project description
This package lets you use real Python (PEP435-style) enums with Django.
Installation
pip install django-enumfields
Included Tools
EnumField, EnumIntegerField
from enumfields import EnumField
from enumfields import Enum # Uses Ethan Furman's "enum34" backport
class Color(Enum):
RED = 'r'
GREEN = 'g'
BLUE = 'b'
class MyModel(models.Model):
color = EnumField(Color, max_length=1)
Elsewhere:
m = MyModel.objects.filter(color=Color.RED)
EnumIntegerField works identically, but the underlying storage mechanism is an IntegerField instead of a CharField.
Enum
Normally, you just use normal PEP435-style enums, however, django-enumfields also encludes its own version of Enum with a few extra bells and whistles. Namely, the smart definition of labels which are used, for example, in admin dropdowns. By default, it will create labels by title-casing your constant names. You can provide custom labels with a nested “Labels” class.
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 is provided to allow using enums in list_filter.
from enumfields.admin import EnumFieldListFilter
class MyModelAdmin(admin.ModelAdmin):
list_filter = [('color', EnumFieldListFilter)]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_enumfields-0.8.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d95b3c1fbb7722450130baa86e74bff5d228d38f9676ec5906927bc43c8a7d3a |
|
MD5 | 4d612e1fd3a1e40eda2e5282ba624a45 |
|
BLAKE2b-256 | 6fa6607e3aa16a8f90ca67728735ea4e0a882136cb16d8505e439f6ebeec5f5a |