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 enum import Enum # Uses Ethan Furman's "enum34" backport class MyModel(models.Model): class Color(Enum): RED = 'r' GREEN = 'g' BLUE = 'b' color = EnumField(Color, max_length=1)
Elsewhere:
m = MyModel.objects.filter(color=MyModel.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 MyModel(models.Model): class Color(Enum): RED = 'r' GREEN = 'g' BLUE = 'b' class Labels: RED = 'A custom label' color = EnumField(Color, max_length=1) assert MyModel.Color.GREEN.label == 'Green' assert MyModel.Color.RED.label == 'A custom label'
Release history Release notifications
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size & hash SHA256 hash help | File type | Python version | Upload date |
---|---|---|---|
django-enumfields-0.4.1.tar.gz (6.4 kB) Copy SHA256 hash SHA256 | Source | None | Jul 11, 2014 |