mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #470 -- Added support for database defaults on fields.
Special thanks to Hannes Ljungberg for finding multiple implementation gaps. Thanks also to Simon Charette, Adam Johnson, and Mariusz Felisiak for reviews.
This commit is contained in:
parent
599f3e2cda
commit
7414704e88
32 changed files with 1089 additions and 34 deletions
|
@ -2102,6 +2102,33 @@ class SchemaTests(TransactionTestCase):
|
|||
with self.assertRaises(IntegrityError):
|
||||
NoteRename.objects.create(detail_info=None)
|
||||
|
||||
@isolate_apps("schema")
|
||||
def test_rename_keep_db_default(self):
|
||||
"""Renaming a field shouldn't affect a database default."""
|
||||
|
||||
class AuthorDbDefault(Model):
|
||||
birth_year = IntegerField(db_default=1985)
|
||||
|
||||
class Meta:
|
||||
app_label = "schema"
|
||||
|
||||
self.isolated_local_models = [AuthorDbDefault]
|
||||
with connection.schema_editor() as editor:
|
||||
editor.create_model(AuthorDbDefault)
|
||||
columns = self.column_classes(AuthorDbDefault)
|
||||
self.assertEqual(columns["birth_year"][1].default, "1985")
|
||||
|
||||
old_field = AuthorDbDefault._meta.get_field("birth_year")
|
||||
new_field = IntegerField(db_default=1985)
|
||||
new_field.set_attributes_from_name("renamed_year")
|
||||
new_field.model = AuthorDbDefault
|
||||
with connection.schema_editor(
|
||||
atomic=connection.features.supports_atomic_references_rename
|
||||
) as editor:
|
||||
editor.alter_field(AuthorDbDefault, old_field, new_field, strict=True)
|
||||
columns = self.column_classes(AuthorDbDefault)
|
||||
self.assertEqual(columns["renamed_year"][1].default, "1985")
|
||||
|
||||
@skipUnlessDBFeature(
|
||||
"supports_column_check_constraints", "can_introspect_check_constraints"
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue