Django Enum library for python.
Project description
django-richenum
About
A Django extension of richenum for Python. If you're unfamiliar with richenums, please read up on them (see Related Packages) before using django-richenum.
Model Fields
IndexEnumField
Store ints in DB, but expose OrderedRichEnumValues in Python.
CanonicalNameEnumField
Store varchar in DB, but expose RichEnumValues in Python.
We recommend that you use IndexEnumField for storage and query efficiency.
LaxIndexEnumField
Like IndexEnumField, but also allows casting to and from canonical names.
Mainly used to help migrate existing code that uses strings as database values.
Form Fields
CanonicalEnumField
Uses the RichEnum/OrderedRichEnum canonical_name as form field values.
IndexEnumField
Uses the OrderedRichEnum index as form field values.
Django Admin
RichEnumFieldListFilter
Enables filtering by RichEnum model fields in the Django admin UI.
Links
Installation
pip install django-richenum
Example Usage
IndexEnumField
>>> from richenum import OrderedRichEnum, OrderedRichEnumValue
>>> class MyOrderedRichEnum(OrderedRichEnum):
... FOO = OrderedRichEnumValue(index=1, canonical_name="foo", display_name="Foo")
... BAR = OrderedRichEnumValue(index=2, canonical_name="bar", display_name="Bar")
...
>>> from django.db import models
>>> from django_richenum.models import IndexEnumField
>>> class MyModel(models.Model):
... my_enum = IndexEnumField(MyOrderedRichEnum, default=MyOrderedRichEnum.FOO)
...
>>> m = MyModel.objects.create(my_enum=MyOrderedRichEnum.BAR)
>>> m.save()
>>> m.my_enum
OrderedRichEnumValue - idx: 2 canonical_name: 'bar' display_name: 'Bar'
>>> MyModel.objects.filter(my_enum=MyOrderedRichEnum.BAR)
CanonicalNameEnumField
>>> from richenum import RichEnum, RichEnumValue
>>> class MyRichEnum(RichEnum):
... FOO = RichEnumValue(canonical_name="foo", display_name="Foo")
... BAR = RichEnumValue(canonical_name="bar", display_name="Bar")
...
>>> from django.db import models
>>> from django_richenum.models import CanonicalNameEnumField
>>> class MyModel(models.Model):
... my_enum = CanonicalNameEnumField(MyRichEnum, default=MyRichEnum.FOO)
...
>>> m = MyModel.objects.create(my_enum=MyRichEnum.BAR)
>>> m.save()
>>> m.my_enum
RichEnumValue - canonical_name: 'bar' display_name: 'Bar'
>>> MyModel.objects.filter(my_enum=MyRichEnum.BAR)
RichEnumFieldListFilter
>>> from django_richenum.admin import register_admin_filters
>>> register_admin_filters()
Related Packages
richenum
Package implementing RichEnum and OrderedRichEnum that django-richenum depends on.
Notes
If you're using Django 1.7+, you'll need to use the @deconstructible decorator for your RichEnumValue and OrderedRichEnumValue classes so Django's migration framework knows how to serialize your RichEnumValue and OrderedRichEnumValue.
>>> from django.utils.deconstruct import deconstructible
>>> from richenum import RichEnumValue, OrderedRichEnumValue
>>> @deconstructible
... class CustomRichEnumValue(RichEnumValue):
... pass
...
>>> @deconstructible
... class CustomOrderedRichEnumValue(OrderedRichEnumValue):
... pass
...
Contributing
- Fork the repo from GitHub.
- Make your changes.
- Add unittests for your changes.
- Run
make lintandmake test. - Add yourself to
AUTHORS.md(in alphabetical order). - Send a pull request from your fork to the main repo.
Changelog
5.2.0 (2026-03-16)
- Add support for Python 3.14
- Add support for Django 5.2
- Drop support for Python versions below 3.11
- Drop support for Django versions below 4.2
5.1.0 (2026-3-16)
- Migrate to poetry
4.1.0 (2023-12-12)
- Support for Django 4.2
- Support for Python 3.11
- Remove support for Django 2.2, 3.0, 3.1
- Remove support for Python 3.7
- Require MySQL 8 and Postgres 12
3.7.0 (2019-09-05)
- Support for Django 2.3
3.6.0 (2019-07-09)
- Support for Django 2.2
- Support for Python 3.7
- Remove support for Django 2.0
3.5.0 (2018-09-10)
- Fix deprecation of context param for Field.from_db_value
- Support for Django 2.1
- Switch tests suite to use pytest
- Remove pylint-django plugin, no longer needed
3.4.0 (2018-02-10)
- Drop support for old Django versions
3.3.0 (2018-01-21)
- removed Python 3.4
- add support for Python 3.6
- add support for Django 2.0
- Properly mark raw strings (used as regex)
3.2.0 (2016-08-22)
- Python 3.4 & 3.5 support
3.1.0 (2015-08-02)
- Django 1.10 support
3.0.1 (2015-07-13)
- Prepare for python 3 support
2.4.1 (2015-05-04)
- replace mysql client library (for tests)
- stop using lambdas
2.3.0 (2015-05-04)
- Support Django 1.8
2.2.0 (2015-03-11)
- Support ModelForms for non-SQLite DB backends
2.1.0 (2014-11-01)
- Support migration in Django 1.7
2.0.0 (2014-09-04)
- Support Django 1.7, drop support for Python 2.6.
1.2.2 (2014-08-02)
- Support Django 1.3
1.2.1 (2014-06-02)
- Remove uses of BaseException.message.
1.2.0 (2013-12-03)
- Add enum-aware versions of TypedMultipleChoiceField.
1.1.0 (2013-12-03)
- Fix form fields to support Django 1.6 (while maintaining compatibility with 1.4 and 1.5).
1.0.2 (2013-11-05)
- Make EnumField.run_validators a no-op. This stops some warnings from type comparison, and it doesn't seem useful in an EnumField context.
1.0.1 (2013-09-10)
- Support South.
1.0.0 (2013-08-16)
- Initial public release.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_richenum-5.2.0.tar.gz.
File metadata
- Download URL: django_richenum-5.2.0.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9c7b0422713134f182a0178d876f6ca72f06283ca148405511fcfef763eb686
|
|
| MD5 |
7874f4283d11eb23e75ae8ff708630b5
|
|
| BLAKE2b-256 |
9611b8422d21c315841539ff71f53290d81ef4c569714c045bc4ac2880ccd3cf
|
Provenance
The following attestation bundles were made for django_richenum-5.2.0.tar.gz:
Publisher:
publish.yml on hearsaycorp/django-richenum
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_richenum-5.2.0.tar.gz -
Subject digest:
a9c7b0422713134f182a0178d876f6ca72f06283ca148405511fcfef763eb686 - Sigstore transparency entry: 1111147140
- Sigstore integration time:
-
Permalink:
hearsaycorp/django-richenum@5433eb6ccced001e8780498fb3945ebc49ff2157 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/hearsaycorp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5433eb6ccced001e8780498fb3945ebc49ff2157 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file django_richenum-5.2.0-py3-none-any.whl.
File metadata
- Download URL: django_richenum-5.2.0-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52edfb5d6fdf881220ea006fe350975342f0ca1119b27b57e4330258e80c62e0
|
|
| MD5 |
bd9886778c9d02c218d7cad304fcf2a7
|
|
| BLAKE2b-256 |
2b99ff85f4abd0322c2d21048c99de0e1b4cfdb24364ffc1d88636fc66386dc7
|
Provenance
The following attestation bundles were made for django_richenum-5.2.0-py3-none-any.whl:
Publisher:
publish.yml on hearsaycorp/django-richenum
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_richenum-5.2.0-py3-none-any.whl -
Subject digest:
52edfb5d6fdf881220ea006fe350975342f0ca1119b27b57e4330258e80c62e0 - Sigstore transparency entry: 1111147143
- Sigstore integration time:
-
Permalink:
hearsaycorp/django-richenum@5433eb6ccced001e8780498fb3945ebc49ff2157 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/hearsaycorp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5433eb6ccced001e8780498fb3945ebc49ff2157 -
Trigger Event:
workflow_dispatch
-
Statement type: