diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/migrations/operations/fields.py | 46 | ||||
| -rw-r--r-- | django/db/migrations/operations/models.py | 61 |
2 files changed, 66 insertions, 41 deletions
diff --git a/django/db/migrations/operations/fields.py b/django/db/migrations/operations/fields.py index 37e0c063e1..7c619d49ce 100644 --- a/django/db/migrations/operations/fields.py +++ b/django/db/migrations/operations/fields.py @@ -1,3 +1,4 @@ +from django.db import router from .base import Operation @@ -17,11 +18,13 @@ class AddField(Operation): def database_forwards(self, app_label, schema_editor, from_state, to_state): from_model = from_state.render().get_model(app_label, self.model_name) to_model = to_state.render().get_model(app_label, self.model_name) - schema_editor.add_field(from_model, to_model._meta.get_field_by_name(self.name)[0]) + if router.allow_migrate(schema_editor.connection.alias, to_model): + schema_editor.add_field(from_model, to_model._meta.get_field_by_name(self.name)[0]) def database_backwards(self, app_label, schema_editor, from_state, to_state): from_model = from_state.render().get_model(app_label, self.model_name) - schema_editor.remove_field(from_model, from_model._meta.get_field_by_name(self.name)[0]) + if router.allow_migrate(schema_editor.connection.alias, from_model): + schema_editor.remove_field(from_model, from_model._meta.get_field_by_name(self.name)[0]) def describe(self): return "Add field %s to %s" % (self.name, self.model_name) @@ -45,12 +48,14 @@ class RemoveField(Operation): def database_forwards(self, app_label, schema_editor, from_state, to_state): from_model = from_state.render().get_model(app_label, self.model_name) - schema_editor.remove_field(from_model, from_model._meta.get_field_by_name(self.name)[0]) + if router.allow_migrate(schema_editor.connection.alias, from_model): + schema_editor.remove_field(from_model, from_model._meta.get_field_by_name(self.name)[0]) def database_backwards(self, app_label, schema_editor, from_state, to_state): from_model = from_state.render().get_model(app_label, self.model_name) to_model = to_state.render().get_model(app_label, self.model_name) - schema_editor.add_field(from_model, to_model._meta.get_field_by_name(self.name)[0]) + if router.allow_migrate(schema_editor.connection.alias, to_model): + schema_editor.add_field(from_model, to_model._meta.get_field_by_name(self.name)[0]) def describe(self): return "Remove field %s from %s" % (self.name, self.model_name) @@ -74,11 +79,12 @@ class AlterField(Operation): def database_forwards(self, app_label, schema_editor, from_state, to_state): from_model = from_state.render().get_model(app_label, self.model_name) to_model = to_state.render().get_model(app_label, self.model_name) - schema_editor.alter_field( - from_model, - from_model._meta.get_field_by_name(self.name)[0], - to_model._meta.get_field_by_name(self.name)[0], - ) + if router.allow_migrate(schema_editor.connection.alias, to_model): + schema_editor.alter_field( + from_model, + from_model._meta.get_field_by_name(self.name)[0], + to_model._meta.get_field_by_name(self.name)[0], + ) def database_backwards(self, app_label, schema_editor, from_state, to_state): self.database_forwards(app_label, schema_editor, from_state, to_state) @@ -105,20 +111,22 @@ class RenameField(Operation): def database_forwards(self, app_label, schema_editor, from_state, to_state): from_model = from_state.render().get_model(app_label, self.model_name) to_model = to_state.render().get_model(app_label, self.model_name) - schema_editor.alter_field( - from_model, - from_model._meta.get_field_by_name(self.old_name)[0], - to_model._meta.get_field_by_name(self.new_name)[0], - ) + if router.allow_migrate(schema_editor.connection.alias, to_model): + schema_editor.alter_field( + from_model, + from_model._meta.get_field_by_name(self.old_name)[0], + to_model._meta.get_field_by_name(self.new_name)[0], + ) def database_backwards(self, app_label, schema_editor, from_state, to_state): from_model = from_state.render().get_model(app_label, self.model_name) to_model = to_state.render().get_model(app_label, self.model_name) - schema_editor.alter_field( - from_model, - from_model._meta.get_field_by_name(self.new_name)[0], - to_model._meta.get_field_by_name(self.old_name)[0], - ) + if router.allow_migrate(schema_editor.connection.alias, to_model): + schema_editor.alter_field( + from_model, + from_model._meta.get_field_by_name(self.new_name)[0], + to_model._meta.get_field_by_name(self.old_name)[0], + ) def describe(self): return "Rename field %s on %s to %s" % (self.old_name, self.model_name, self.new_name) diff --git a/django/db/migrations/operations/models.py b/django/db/migrations/operations/models.py index bf15201194..406efa6ef1 100644 --- a/django/db/migrations/operations/models.py +++ b/django/db/migrations/operations/models.py @@ -1,5 +1,5 @@ from .base import Operation -from django.db import models +from django.db import models, router from django.db.migrations.state import ModelState @@ -17,13 +17,17 @@ class CreateModel(Operation): def state_forwards(self, app_label, state): state.models[app_label, self.name.lower()] = ModelState(app_label, self.name, self.fields, self.options, self.bases) - def database_forwards(self, app, schema_editor, from_state, to_state): + def database_forwards(self, app_label, schema_editor, from_state, to_state): app_cache = to_state.render() - schema_editor.create_model(app_cache.get_model(app, self.name)) + model = app_cache.get_model(app_label, self.name) + if router.allow_migrate(schema_editor.connection.alias, model): + schema_editor.create_model(model) - def database_backwards(self, app, schema_editor, from_state, to_state): + def database_backwards(self, app_label, schema_editor, from_state, to_state): app_cache = from_state.render() - schema_editor.delete_model(app_cache.get_model(app, self.name)) + model = app_cache.get_model(app_label, self.name) + if router.allow_migrate(schema_editor.connection.alias, model): + schema_editor.delete_model(model) def describe(self): return "Create model %s" % (self.name, ) @@ -42,11 +46,15 @@ class DeleteModel(Operation): def database_forwards(self, app_label, schema_editor, from_state, to_state): app_cache = from_state.render() - schema_editor.delete_model(app_cache.get_model(app_label, self.name)) + model = app_cache.get_model(app_label, self.name) + if router.allow_migrate(schema_editor.connection.alias, model): + schema_editor.delete_model(model) def database_backwards(self, app_label, schema_editor, from_state, to_state): app_cache = to_state.render() - schema_editor.create_model(app_cache.get_model(app_label, self.name)) + model = app_cache.get_model(app_label, self.name) + if router.allow_migrate(schema_editor.connection.alias, model): + schema_editor.create_model(model) def describe(self): return "Delete model %s" % (self.name, ) @@ -67,11 +75,14 @@ class AlterModelTable(Operation): def database_forwards(self, app_label, schema_editor, from_state, to_state): old_app_cache = from_state.render() new_app_cache = to_state.render() - schema_editor.alter_db_table( - new_app_cache.get_model(app_label, self.name), - old_app_cache.get_model(app_label, self.name)._meta.db_table, - new_app_cache.get_model(app_label, self.name)._meta.db_table, - ) + old_model = old_app_cache.get_model(app_label, self.name) + new_model = new_app_cache.get_model(app_label, self.name) + if router.allow_migrate(schema_editor.connection.alias, new_model): + schema_editor.alter_db_table( + new_model, + old_model._meta.db_table, + new_model._meta.db_table, + ) def database_backwards(self, app_label, schema_editor, from_state, to_state): return self.database_forwards(app_label, schema_editor, from_state, to_state) @@ -97,11 +108,14 @@ class AlterUniqueTogether(Operation): def database_forwards(self, app_label, schema_editor, from_state, to_state): old_app_cache = from_state.render() new_app_cache = to_state.render() - schema_editor.alter_unique_together( - new_app_cache.get_model(app_label, self.name), - getattr(old_app_cache.get_model(app_label, self.name)._meta, "unique_together", set()), - getattr(new_app_cache.get_model(app_label, self.name)._meta, "unique_together", set()), - ) + old_model = old_app_cache.get_model(app_label, self.name) + new_model = new_app_cache.get_model(app_label, self.name) + if router.allow_migrate(schema_editor.connection.alias, new_model): + schema_editor.alter_unique_together( + new_model, + getattr(old_model._meta, "unique_together", set()), + getattr(new_model._meta, "unique_together", set()), + ) def database_backwards(self, app_label, schema_editor, from_state, to_state): return self.database_forwards(app_label, schema_editor, from_state, to_state) @@ -127,11 +141,14 @@ class AlterIndexTogether(Operation): def database_forwards(self, app_label, schema_editor, from_state, to_state): old_app_cache = from_state.render() new_app_cache = to_state.render() - schema_editor.alter_index_together( - new_app_cache.get_model(app_label, self.name), - getattr(old_app_cache.get_model(app_label, self.name)._meta, "index_together", set()), - getattr(new_app_cache.get_model(app_label, self.name)._meta, "index_together", set()), - ) + old_model = old_app_cache.get_model(app_label, self.name) + new_model = new_app_cache.get_model(app_label, self.name) + if router.allow_migrate(schema_editor.connection.alias, new_model): + schema_editor.alter_index_together( + new_model, + getattr(old_model._meta, "index_together", set()), + getattr(new_model._meta, "index_together", set()), + ) def database_backwards(self, app_label, schema_editor, from_state, to_state): return self.database_forwards(app_label, schema_editor, from_state, to_state) |
