Django Add Default Value

0.10.0 · active · verified Thu Apr 16

django-add-default-value is a Django Migration Operation that facilitates transferring a field's default value directly to the database schema. This addresses Django's default behavior of handling `default` values at the application level and dropping the database `DEFAULT` constraint after initial row population. The library is currently active, with version 0.10.0 released in February 2022, and helps ensure database-level default constraints persist for improved data integrity and compatibility with non-Django database access.

Common errors

Warnings

Install

Imports

Quickstart

To use `django-add-default-value`, manually add the `AddDefaultValue` operation to an autogenerated migration file immediately after an `AddField` operation. This ensures that the specified default value for the field is transferred to the database schema, maintaining the default constraint at the database level.

import os
import django
from django.conf import settings
from django.db import migrations, models
from django_add_default_value import AddDefaultValue

# Minimal Django setup for demonstration
if not settings.configured:
    settings.configure(
        INSTALLED_APPS=['my_app'],
        DATABASES={'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': ':memory:'}}
    )
    django.setup()

# Example of a migration file using AddDefaultValue
class Migration(migrations.Migration):

    dependencies = [
        # ... other app dependencies
    ]

    operations = [
        migrations.AddField(
            model_name='my_model',
            name='my_field',
            field=models.CharField(default='my_default_value', max_length=255),
        ),
        AddDefaultValue(
            model_name='my_model',
            name='my_field',
            value='my_default_value'
        )
    ]

view raw JSON →