Skip to main content

Real Python Enums for Django.

Project description

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

django-enumfields2 is a friendly drop-in fork of hzdg/django-enumfields that’s still maintained.

https://github.com/akx/django-enumfields2/actions/workflows/ci.yml/badge.svg https://img.shields.io/pypi/v/django-enumfields2.svg https://img.shields.io/pypi/pyversions/django-enumfields2.svg

Installation

  1. pip install django-enumfields2

Included Tools

EnumField, EnumIntegerField

from enumfields import EnumField
from enum import Enum

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.

Usage in Forms

Call the formfield method to use an EnumField directly in a Form.

class MyForm(forms.Form):

    color = EnumField(Color, max_length=1).formfield()

Enum

Normally, you just use normal PEP435-style enums, however, django-enumfields also includes 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)]

Django Rest Framework integration

EnumSupportSerializerMixin mixin allows you to use enums in DRF serializers.

# models.py
from enumfields import EnumField
from enum import Enum

class Color(Enum):
    RED = 'r'
    GREEN = 'g'
    BLUE = 'b'

class MyModel(models.Model):
    color = EnumField(Color, max_length=1)


# serializers.py
from enumfields.drf.serializers import EnumSupportSerializerMixin
from rest_framework import serializers
from .models import MyModel

class MyModelSerializer(EnumSupportSerializerMixin, serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = '__all__'

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_enumfields2-3.0.2.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

django_enumfields2-3.0.2-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file django_enumfields2-3.0.2.tar.gz.

File metadata

  • Download URL: django_enumfields2-3.0.2.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.23.0

File hashes

Hashes for django_enumfields2-3.0.2.tar.gz
Algorithm Hash digest
SHA256 787dd61d132f73ffadbcfd74dc5caa339505f506b1ebb60da9bf0344eacf2115
MD5 69426382439799be26a6da537a904444
BLAKE2b-256 03e496daf09b637433a08dc720650d22bbb5a669d069a1afefd08bcc03eb71f3

See more details on using hashes here.

File details

Details for the file django_enumfields2-3.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_enumfields2-3.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7ddcbdea6b97428f481f7191b53b110933be355f6d10656d59a4f886488a6cc4
MD5 d9dc445862bdff1f42314082f908d393
BLAKE2b-256 77ddd83e5aa2feed816cba8099bb4893c32962fc55cc8da2ea63052768e7a8ef

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