skillfed

django-deprecate-fields

This package allows deprecating model fields and allows removing them in a backwards compatible manner.

django-deprecate-fields v0.2.3 2.8M downloads/30d#2,866 on PyPI196
Permissive license Apache License 2.0 Active released

What it is and what it does

Django-deprecate-fields provides a decorator-based approach to safely remove model fields from a Django application without breaking existing code during the transition period. When you wrap a field with `deprecate_field()`, the package automatically converts it to nullable during the next migration, and any code accessing the field will receive None instead of raising an error. This allows you to deploy the deprecation marker, run migrations, then safely remove the field definition in a subsequent deployment—a three-step process that maintains backward compatibility across your application.

The package is designed for teams managing long-lived Django projects where fields need to be retired gradually. It handles the common Django commands (makemigrations, migrate, showmigrations) automatically, and supports custom migration commands via a settings parameter. With a single runtime dependency on Django and no known vulnerabilities, it integrates cleanly into existing projects.

Use it for:

  • Mark a database column as deprecated in one release, allowing code to stop using it before physical removal in a later release.
  • Provide a default return value (via `return_instead` argument) when deprecated fields are accessed, easing the transition for legacy code.
  • Coordinate field removal across multiple services by using the three-step deprecation workflow without requiring simultaneous deployments.
  • Audit which parts of your codebase still reference deprecated fields by catching None returns or custom fallback values.
  • Support custom migration tools (e.g., pgmakemigrations) by configuring DEPRECATE_FIELD_CUSTOM_MIGRATION_COMMAND in settings.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Provides a decorator to mark Django model fields as deprecated, automatically making them nullable and returning None on access, enabling safe field removal across deployments.

Yes. This package solves a real operational problem—removing Django model fields safely across multiple deployments—with low install friction, active maintenance, and no security issues. It is most valuable for teams managing production Django applications where coordinated deployments are difficult or where you need to support older code during a transition period. If you rarely remove fields or always deploy atomically, the benefit is lower.

Install

django-deprecate-fields on PyPI

pip

pip install django-deprecate-fields

uv

uv add django-deprecate-fields

poetry

poetry add django-deprecate-fields

Installing django-deprecate-fields

Before you install

Low friction install with a single runtime dependency on Django. Actively maintained with a recent commit and no known vulnerabilities.

License in practice

Released under Apache License 2.0, a permissive license allowing commercial use with minimal restrictions.

Quickstart

pip install django-deprecate-fields

from django_deprecate_fields import deprecate_field
from django.db import models

class MyModel(models.Model):
    field1 = deprecate_field(models.CharField())
    field2 = models.CharField()

Verify before relying

  • Whether the package works with Django versions released after 3.1, given classifiers only list up to 3.1
  • Whether Python 2.7 support is actively maintained or a legacy artifact

Package facts

License Apache License 2.0 (permissive)
Python support not specified
Install friction low — pure-Python wheel
Runtime dependencies 1 — Django
Maintenance actively maintained — 206 days since the last release
Last repo commit
First released
Downloads 2,839,332/month — #2,866 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: django_deprecate_fields-0.2.3-py3-none-any.whl

Keywords: django, migration, deprecation, database, backward, compatibility

Development Status :: 3 - AlphaEnvironment :: Web EnvironmentFramework :: DjangoFramework :: Django :: 2.1Framework :: Django :: 2.2Framework :: Django :: 3.0Framework :: Django :: 3.1Intended Audience :: DevelopersProgramming Language :: PythonProgramming Language :: Python :: 2Programming Language :: Python :: 2.7Programming Language :: Python :: 3Programming Language :: Python :: 3.4Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7

Tags

django model field deprecationsafely remove django fieldsbackward compatible field removaldjango migration field deprecationgradual field removal django
django-migrationsfield-deprecationbackward-compatibility

More Database packages