Skip to main content

Django Utils is a module with some convenient utilities not included with the standard Django install

Project description

Travis status:

https://travis-ci.org/WoLpH/django-utils.svg?branch=master

Coverage:

https://coveralls.io/repos/WoLpH/django-utils/badge.svg?branch=master

Django Utils is a collection of small Django helper functions, utilities and classes which make common patterns shorter and easier. It is by no means a complete collection but it has served me quite a bit in the past and I will keep extending it.

Examples are:

  • Admin Select (Dropdown) filters

  • Admin Select2 (Autocomplete dropdown) filters

  • Admin JSON sub-field filters

  • Enum based choicefields

  • Models with automatic __str__, __unicode__ and __repr__ functions based on names and/or slugs using simple mixins.

  • Models with automatic updated_at and created_at fields

  • Models with automatic slugs based on the name property.

  • Iterating through querysets in predefined chunks to prevent out of memory errors

The library depends on the Python Utils library.

Documentation is available at: http://django-utils-2.readthedocs.io/en/latest/

Install

To install:

  1. Run pip install django-utils2 or execute python setup.py install in the source directory

  2. Add django_utils to your INSTALLED_APPS

If you want to run the tests, run py.test (requirements in tests/requirements.txt)

Admin Select / Dropdown / Autocomplete (JSON) Filters

All of the standard admin list filters are available through django_utils .admin.filters as:

  • The original filter (e.g. SimpleListFilter)

  • A basic select/dropdown filter: SimpleListFilterDropdown

  • A select2 based autocompleting dropdown filter: SimpleListFilterSelect2

On PostgreSQL you can additionally filter on JSON fields as well given paths:

class SomeModelAdmin(admin.ModelAdmin):
    list_filter = (
        JSONFieldFilterSelect2.create('some_json_field__some__sub_path'),
    )

That will filter a JSON field named some_json_field and look for values like this:

{"some": {"sub_path": "some value"}}

By default the results for the JSON filters are cached for 10 minutes but can be changed through the create parameters.

Choices usage

To enable easy to use choices which are more convenient than the Django 3.0 choices system you can use this:

from django_utils import choices


# For manually specifying the value (automatically detects ``str``, ``int`` and ``float``):
class Human(models.Model):
    class Gender(choices.Choices):
        MALE = 'm'
        FEMALE = 'f'
        OTHER = 'o'

    gender = models.CharField(max_length=1, choices=Gender)


# To define the values as ``male`` implicitly:
class Human(models.Model):
    class Gender(choices.Choices):
        MALE = choices.Choice()
        FEMALE = choices.Choice()
        OTHER = choices.Choice()

    gender = models.CharField(max_length=1, choices=Gender)


# Or explicitly define them
class Human(models.Model):
    class Gender(choices.Choices):
        MALE = choices.Choice('m', 'male')
        FEMALE = choices.Choice('f', 'female')
        OTHER = choices.Choice('o', 'other')

    gender = models.CharField(max_length=1, choices=Gender)

A PostgreSQL ENUM field will be coming soon to automatically facilitate the creation of the enum if needed.

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-utils2-3.0.0.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

django_utils2-3.0.0-py2.py3-none-any.whl (21.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-utils2-3.0.0.tar.gz.

File metadata

  • Download URL: django-utils2-3.0.0.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for django-utils2-3.0.0.tar.gz
Algorithm Hash digest
SHA256 855339f1df9a8452580e20f94700959f6ea6f588661fb62b428f70ffd4b580e9
MD5 33a33cb878cf1f6b9f4e53ee27ecc8a6
BLAKE2b-256 bd130630e7b2ee71f45724556854a28c87c80529c351435a6d79b669e8e2e19a

See more details on using hashes here.

File details

Details for the file django_utils2-3.0.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_utils2-3.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ac9b32a9d1611365049c1c7865d1c266b111281c4b9ff2917458740b6f65d73e
MD5 21fb152cbb0fda6f594b0ec8a2e6b259
BLAKE2b-256 25a3f99012ea8e7215a13a6ec83d4feadcfc119edf77edd2e83193ae004ca34a

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