Skip to main content

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

Project description

Django - Deprecate Field

PyPi License Contributing Stars

Installation

pip install django-deprecate-fields

Usage

Assume the simple following model:

from django.db import models

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

In order to remove field1, it should first be marked as deprecated:

from django.db import models
from django_deprecate_fields import deprecate_field

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

Secondly, makemigrations should be called, which will change the field to be nullable. Any lingering references to it in your code will return None (or optionally any value or callable passed to deprecate_field as the return_instead argument)

Lastly, after the changes above have been deployed, field1 can then safely be removed in the model (plus another makemigrations run)

Custom django commands

If you need the actual field to be returned when a django command other than makemigrations, migrate or showmigrations is run, you can specify the DEPRECATE_FIELD_CUSTOM_MIGRATION_COMMAND parameter in the settings.

For instance if you generate migrations with pgmakemigrations instead of makemigrations, you can add this to your settings:

DEPRECATE_FIELD_CUSTOM_MIGRATION_COMMAND = {"pgmakemigrations"}

Contributing

First of all, thank you very much for contributing to this project. Please base your work on the master branch and target master in your pull request.

License

django-deprecate-fields is released under the Apache 2.0 License.

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_deprecate_fields-0.2.3.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_deprecate_fields-0.2.3-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file django_deprecate_fields-0.2.3.tar.gz.

File metadata

  • Download URL: django_deprecate_fields-0.2.3.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for django_deprecate_fields-0.2.3.tar.gz
Algorithm Hash digest
SHA256 d3898d46abe8f338c870e9ef5040dd2f27f3f205e34f5aa2536427d7ffad8aad
MD5 6ee6842a5a19dac5188b5c4bb0a2e858
BLAKE2b-256 3adc281214543a8e3ebd67294e6a2765d425481726834bf6fe662013dff56eed

See more details on using hashes here.

File details

Details for the file django_deprecate_fields-0.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for django_deprecate_fields-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8510a4bfa23ea7c9d5dddcf7593fa5c8dcc4defcbfad97bf6c4b6deed6abc311
MD5 5cfaf7f5362ebac2e6aab0cf1fe008e4
BLAKE2b-256 fef7352dee1616b5653ff09f2b0035f07573accb98954a85c009c08bc7625217

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page