or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

admin-extensions.mdindex.mdmanagement-commands.mdmodel-base-classes.mdmodel-fields.mdtemplate-tags.mdvalidators.md
tile.json

tessl/pypi-django-extensions

Django Extensions is a comprehensive collection of custom extensions that enhance the Django web framework with additional management commands, utilities, and developer tools.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/django-extensions@3.2.x

To install, run

npx @tessl/cli install tessl/pypi-django-extensions@3.2.0

index.mddocs/

Django Extensions

A comprehensive collection of custom extensions that enhance the Django web framework with additional management commands, utilities, and developer tools. Django Extensions provides powerful debugging and development commands, custom model fields, validators, template tags, and administrative utilities that streamline the Django development workflow.

Package Information

  • Package Name: django-extensions
  • Language: Python
  • Installation: pip install django-extensions
  • Django Version: Django 3.2+
  • Python Version: Python 3.6+

Core Imports

# Add to INSTALLED_APPS in settings.py
INSTALLED_APPS = [
    'django_extensions',
    # ... your other apps
]

Common imports for models and fields:

from django_extensions.db.models import TimeStampedModel, TitleSlugDescriptionModel
from django_extensions.db.fields import AutoSlugField, CreationDateTimeField

For validators:

from django_extensions.validators import NoControlCharactersValidator, NoWhitespaceValidator, HexValidator

For admin extensions:

from django_extensions.admin import ForeignKeyAutocompleteAdmin, NullFieldListFilter, ForeignKeySearchInput

Basic Usage

# Using TimeStampedModel base class
from django.db import models
from django_extensions.db.models import TimeStampedModel

class Article(TimeStampedModel):
    title = models.CharField(max_length=200)
    content = models.TextField()
    # created and modified fields are automatically added

# Using AutoSlugField
from django_extensions.db.fields import AutoSlugField

class Post(models.Model):
    title = models.CharField(max_length=200)
    slug = AutoSlugField(populate_from='title')

# Using management commands
# python manage.py shell_plus  # Enhanced shell with models loaded
# python manage.py show_urls   # Display all URL patterns
# python manage.py graph_models # Generate model diagrams

Architecture

Django Extensions extends Django through several key mechanisms:

  • Django App Integration: Registered as a Django app providing management commands, model mixins, and template tags
  • Management Commands: 44+ commands extending Django's built-in management system
  • Model Extensions: Abstract base classes and custom fields that enhance Django's ORM
  • Template System Integration: Custom template tags and filters for enhanced template functionality
  • Validation Framework: Custom validators that integrate with Django's form and model validation

Capabilities

Management Commands

Django Extensions provides 44+ management commands for development, debugging, database operations, and administrative tasks. These commands enhance Django's built-in management system with powerful utilities for developers.

# Key management commands (accessed via python manage.py <command>):
# shell_plus - Enhanced shell with auto-imported models
# show_urls - Display all URL patterns  
# graph_models - Generate model relationship diagrams
# runserver_plus - Enhanced development server
# reset_db - Reset database
# dumpscript - Export data as Python script

Management Commands

Model Fields

Custom model fields that extend Django's field types with specialized functionality including auto-generated slugs, timestamps, UUIDs, and JSON data handling.

class AutoSlugField(SlugField):
    def __init__(self, populate_from=None, separator='-', overwrite=False, **kwargs): ...

class CreationDateTimeField(DateTimeField): ...
class ModificationDateTimeField(DateTimeField): ...
class RandomCharField(CharField): ...
class JSONField(TextField): ...

Model Fields

Model Base Classes

Abstract model classes providing common functionality patterns including timestamps, activation status, and title/description/slug combinations.

class TimeStampedModel(models.Model):
    created: CreationDateTimeField
    modified: ModificationDateTimeField
    class Meta:
        abstract = True

class ActivatorModel(models.Model):
    status: int
    activate_date: DateTimeField  
    deactivate_date: DateTimeField
    objects: ActivatorModelManager
    class Meta:
        abstract = True

Model Base Classes

Validators

Custom validation classes for field-level validation including control character prevention, whitespace validation, and hexadecimal string validation.

class NoControlCharactersValidator:
    def __init__(self, message=None, code=None, whitelist=None): ...
    def __call__(self, value): ...

class HexValidator:
    def __init__(self, length=None, min_length=None, max_length=None, **kwargs): ...
    def __call__(self, value): ...

Validators

Template Tags

Template tag libraries providing debugging capabilities, syntax highlighting, text formatting, and typography enhancements for Django templates.

# Template tags available after {% load <library> %}
# debugger_tags: {% ipdb %}, {% pdb %}, {% wdb %}
# highlighting: {% highlight "python" %}code{% endhighlight %}
# syntax_color: {{ code|colorize:"python" }}
# widont: {{ text|widont }}

Template Tags

Admin Extensions

Enhanced Django admin functionality including custom filters and widgets for improved administrative interfaces.

class ForeignKeySearchInput(widgets.Input):
    def __init__(self, rel, admin_site, attrs=None, using=None): ...

class NullFieldListFilter(admin.SimpleListFilter): ...

Admin Extensions

Types

# Field Options Types
FieldOptions = dict[str, Any]  # Django field kwargs

# Validator Types  
ValidationError = django.core.exceptions.ValidationError

# Model Manager Types
QuerySet = django.db.models.QuerySet
Manager = django.db.models.Manager

# Status Constants (ActivatorModel)
INACTIVE_STATUS: int = 0
ACTIVE_STATUS: int = 1
STATUS_CHOICES: tuple[tuple[int, str], ...] = (
    (INACTIVE_STATUS, 'Inactive'),
    (ACTIVE_STATUS, 'Active')
)