Skip to main content

Real Python Enums for Django.

Project description

This package lets you use real Python (PEP435-style) enums with Django.

https://travis-ci.org/hzdg/django-enumfields.svg?branch=master

Installation

  1. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-enumfields-0.8.2.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

django_enumfields-0.8.2-py2.py3-none-any.whl (9.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-enumfields-0.8.2.tar.gz.

File metadata

File hashes

Hashes for django-enumfields-0.8.2.tar.gz
Algorithm Hash digest
SHA256 7b28966df815db3cd592155d5fca2049a4c77de6da919dadd5a6d538e664d70d
MD5 99082460cf2cea2c76c2f8bd79c61aa7
BLAKE2b-256 4ee426fdf1083e2217b44f9a9ea7fbbcc77a0413daa555181a6c8f94361c9c51

See more details on using hashes here.

File details

Details for the file django_enumfields-0.8.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_enumfields-0.8.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 cfe592b250b1f852c621c9cbc07f2199e30f21f76ee51270771281a683cd7b24
MD5 b2a82ca8ed2ae9134f24ca881022d34f
BLAKE2b-256 3e7fed7f7eb913240c32b8eb6cc7a333ab0d7cff522e91a5877c2c883498ea90

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page