django-deprecate-fields


Namedjango-deprecate-fields JSON
Version 0.2.1 PyPI version JSON
download
home_pagehttps://github.com/3YOURMIND/django-deprecate-fields
SummaryThis package allows deprecating model fields and allows removing them in a backwards compatible manner.
upload_time2025-01-01 10:45:17
maintainerNone
docs_urlNone
author3YOURMIND GmbH
requires_pythonNone
licenseApache License 2.0
keywords django migration deprecation database backward compatibility
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Django - Deprecate Field

[![PyPi](https://img.shields.io/pypi/v/django-deprecate-fields.svg?branch=master)](https://pypi.python.org/pypi/django-deprecate-fields/)
[![License](https://img.shields.io/github/license/3yourmind/django-deprecate-fields.svg)](./LICENSE)
[![Contributing](https://img.shields.io/badge/PR-welcome-green.svg)](https://github.com/3YOURMIND/django-deprecate-fields/pulls)
[![Stars](https://img.shields.io/github/stars/3YOURMIND/django-deprecate-fields.svg?style=social&label=Stars)](https://github.com/3YOURMIND/django-deprecate-fields/stargazers)

## Installation

```
pip install django-deprecate-fields
```

## Usage

Assume the simple following model:
```python
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:
```python
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:
```python
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](./LICENSE).

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/3YOURMIND/django-deprecate-fields",
    "name": "django-deprecate-fields",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "django migration deprecation database backward compatibility",
    "author": "3YOURMIND GmbH",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/24/85/89eae771f587ec3b51c84acc467aab7c8e06e08b59d07ca80b28192a2256/django_deprecate_fields-0.2.1.tar.gz",
    "platform": null,
    "description": "# Django - Deprecate Field\n\n[![PyPi](https://img.shields.io/pypi/v/django-deprecate-fields.svg?branch=master)](https://pypi.python.org/pypi/django-deprecate-fields/)\n[![License](https://img.shields.io/github/license/3yourmind/django-deprecate-fields.svg)](./LICENSE)\n[![Contributing](https://img.shields.io/badge/PR-welcome-green.svg)](https://github.com/3YOURMIND/django-deprecate-fields/pulls)\n[![Stars](https://img.shields.io/github/stars/3YOURMIND/django-deprecate-fields.svg?style=social&label=Stars)](https://github.com/3YOURMIND/django-deprecate-fields/stargazers)\n\n## Installation\n\n```\npip install django-deprecate-fields\n```\n\n## Usage\n\nAssume the simple following model:\n```python\nfrom django.db import models\n\nclass MyModel(models.Model):\n    field1 = models.CharField()\n    field2 = models.CharField()\n```\n\nIn order to remove `field1`, it should first be marked as deprecated:\n```python\nfrom django.db import models\nfrom django_deprecate_fields import deprecate_field\n\nclass MyModel(models.Model):\n    field1 = deprecate_field(models.CharField())\n    field2 = models.CharField()\n```\n\nSecondly, `makemigrations` should be called, which will change the field to be nullable. Any lingering references to it\nin your code will return `None` (or optionally any value or callable passed to `deprecate_field` as the\n`return_instead` argument)\n\nLastly, after the changes above have been deployed, `field1` can then safely be removed in the model (plus another\n`makemigrations` run)\n\n### Custom django commands\n\nIf you need the actual field to be returned when a django command other \nthan `makemigrations`, `migrate` or `showmigrations` is run, you can specify the \n`DEPRECATE_FIELD_CUSTOM_MIGRATION_COMMAND` parameter in the settings.\n\nFor instance if you generate migrations with `pgmakemigrations` instead of `makemigrations`, \nyou can add this to your settings:\n```python\nDEPRECATE_FIELD_CUSTOM_MIGRATION_COMMAND = {\"pgmakemigrations\"}\n```\n\n\n## Contributing\n\nFirst of all, thank you very much for contributing to this project. Please base\nyour work on the `master` branch and target `master` in your pull request.\n\n## License\n\n`django-deprecate-fields` is released under the [Apache 2.0 License](./LICENSE).\n",
    "bugtrack_url": null,
    "license": "Apache License 2.0",
    "summary": "This package allows deprecating model fields and allows removing them in a backwards compatible manner.",
    "version": "0.2.1",
    "project_urls": {
        "Homepage": "https://github.com/3YOURMIND/django-deprecate-fields"
    },
    "split_keywords": [
        "django",
        "migration",
        "deprecation",
        "database",
        "backward",
        "compatibility"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "693dcb3c7379f9729d1bf6526bd76764dc467178ef8cc0c605a9f366d20dc0cc",
                "md5": "9ee9bc94db58b589300d9c1e520376de",
                "sha256": "adc21ecabec52abf6faa80e68597e5fe7d020e9a61c0f7402ebdf401d64e8c50"
            },
            "downloads": -1,
            "filename": "django_deprecate_fields-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9ee9bc94db58b589300d9c1e520376de",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 8266,
            "upload_time": "2025-01-01T10:45:15",
            "upload_time_iso_8601": "2025-01-01T10:45:15.149018Z",
            "url": "https://files.pythonhosted.org/packages/69/3d/cb3c7379f9729d1bf6526bd76764dc467178ef8cc0c605a9f366d20dc0cc/django_deprecate_fields-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "248589eae771f587ec3b51c84acc467aab7c8e06e08b59d07ca80b28192a2256",
                "md5": "04890266ae1b49699e60a707b5b5a08f",
                "sha256": "45aece7b831dec2b7d0630d05bbd9a8d23f3249625f6145aa6cdd41362d92d03"
            },
            "downloads": -1,
            "filename": "django_deprecate_fields-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "04890266ae1b49699e60a707b5b5a08f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 7440,
            "upload_time": "2025-01-01T10:45:17",
            "upload_time_iso_8601": "2025-01-01T10:45:17.873726Z",
            "url": "https://files.pythonhosted.org/packages/24/85/89eae771f587ec3b51c84acc467aab7c8e06e08b59d07ca80b28192a2256/django_deprecate_fields-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-01 10:45:17",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "3YOURMIND",
    "github_project": "django-deprecate-fields",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "django-deprecate-fields"
}
        
Elapsed time: 1.94981s