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.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

django_enumfields-0.8.0-py2.py3-none-any.whl (15.8 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

File hashes

Hashes for django-enumfields-0.8.0.tar.gz
Algorithm Hash digest
SHA256 0e746bc303b524a3aa13e6b09481875a9ae98a023c96a2354dbc9c5b1e178db1
MD5 418366b283ba3947140ee1d27c26e7a9
BLAKE2b-256 0352eaa2c088bfa7c68aa4634e8599c24f518e5474efff626dd1f812a693aa2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_enumfields-0.8.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d95b3c1fbb7722450130baa86e74bff5d228d38f9676ec5906927bc43c8a7d3a
MD5 4d612e1fd3a1e40eda2e5282ba624a45
BLAKE2b-256 6fa6607e3aa16a8f90ca67728735ea4e0a882136cb16d8505e439f6ebeec5f5a

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