Loading docs/howto/index.txt +1 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ you quickly accomplish common tasks. static-files/index static-files/deployment windows writing-migrations .. seealso:: Loading docs/howto/writing-migrations.txt 0 → 100644 +69 −0 Original line number Diff line number Diff line =========================== Writing database migrations =========================== This document explains how to structure and write database migrations for different scenarios you might encounter. For introductory material on migrations, see :doc:`the topic guide </topics/migrations>`. .. _data-migrations-and-multiple-databases: Data migrations and multiple databases ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When using multiple databases, you may need to figure out whether or not to run a migration against a particular database. For example, you may want to **only** run a migration on a particular database. In order to do that you can check the database connection's alias inside a ``RunPython`` operation by looking at the ``schema_editor.connection.alias`` attribute:: from django.db import migrations def forwards(apps, schema_editor): if not schema_editor.connection.alias == 'default': return # Your migration code goes here class Migration(migrations.Migration): dependencies = [ # Dependencies to other migrations ] operations = [ migrations.RunPython(forwards), ] .. versionadded:: 1.8 You can also provide hints that will be passed to the :meth:`allow_migrate()` method of database routers as ``**hints``: .. snippet:: :filename: myapp/dbrouters.py class MyRouter(object): def allow_migrate(self, db, model, **hints): if 'target_db' in hints: return db == hints['target_db'] return True Then, to leverage this in your migrations, do the following:: from django.db import migrations def forwards(apps, schema_editor): # Your migration code goes here class Migration(migrations.Migration): dependencies = [ # Dependencies to other migrations ] operations = [ migrations.RunPython(forwards, hints={'target_db': 'default'}), ] docs/index.txt +2 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,8 @@ manipulating the data of your Web application. Learn more about it below: * **Migrations:** :doc:`Introduction to Migrations<topics/migrations>` | :doc:`Operations reference <ref/migration-operations>` | :doc:`SchemaEditor <ref/schema-editor>` :doc:`SchemaEditor <ref/schema-editor>` | :doc:`Writing migrations <howto/writing-migrations>` * **Advanced:** :doc:`Managers <topics/db/managers>` | Loading docs/topics/migrations.txt +6 −63 Original line number Diff line number Diff line Loading @@ -476,74 +476,13 @@ You can pass a second callable to want executed when migrating backwards. If this callable is omitted, migrating backwards will raise an exception. .. _data-migrations-and-multiple-databases: Data migrations and multiple databases ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When using multiple databases, you may need to figure out whether or not to run a migration against a particular database. For example, you may want to **only** run a migration on a particular database. In order to do that you can check the database connection's alias inside a ``RunPython`` operation by looking at the ``schema_editor.connection.alias`` attribute:: from django.db import migrations def forwards(apps, schema_editor): if not schema_editor.connection.alias == 'default': return # Your migration code goes here class Migration(migrations.Migration): dependencies = [ # Dependencies to other migrations ] operations = [ migrations.RunPython(forwards), ] .. versionadded:: 1.8 You can also provide hints that will be passed to the :meth:`allow_migrate()` method of database routers as ``**hints``: .. snippet:: :filename: myapp/dbrouters.py class MyRouter(object): def allow_migrate(self, db, model, **hints): if 'target_db' in hints: return db == hints['target_db'] return True Then, to leverage this in your migrations, do the following:: from django.db import migrations def forwards(apps, schema_editor): # Your migration code goes here class Migration(migrations.Migration): dependencies = [ # Dependencies to other migrations ] operations = [ migrations.RunPython(forwards, hints={'target_db': 'default'}), ] More advanced migrations ~~~~~~~~~~~~~~~~~~~~~~~~ If you're interested in the more advanced migration operations, or want to be able to write your own, see the :doc:`migration operations reference </ref/migration-operations>`. </ref/migration-operations>` and the "how-to" on :doc:`writing migrations </howto/writing-migrations>`. .. _migration-squashing: Loading Loading @@ -806,3 +745,7 @@ More information is available in the :doc:`The Migrations Operations Reference </ref/migration-operations>` Covers the schema operations API, special operations, and writing your own operations. :doc:`The Writing Migrations "how-to" </howto/writing-migrations>` Explains how to structure and write database migrations for different scenarios you might encounter. Loading
docs/howto/index.txt +1 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ you quickly accomplish common tasks. static-files/index static-files/deployment windows writing-migrations .. seealso:: Loading
docs/howto/writing-migrations.txt 0 → 100644 +69 −0 Original line number Diff line number Diff line =========================== Writing database migrations =========================== This document explains how to structure and write database migrations for different scenarios you might encounter. For introductory material on migrations, see :doc:`the topic guide </topics/migrations>`. .. _data-migrations-and-multiple-databases: Data migrations and multiple databases ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When using multiple databases, you may need to figure out whether or not to run a migration against a particular database. For example, you may want to **only** run a migration on a particular database. In order to do that you can check the database connection's alias inside a ``RunPython`` operation by looking at the ``schema_editor.connection.alias`` attribute:: from django.db import migrations def forwards(apps, schema_editor): if not schema_editor.connection.alias == 'default': return # Your migration code goes here class Migration(migrations.Migration): dependencies = [ # Dependencies to other migrations ] operations = [ migrations.RunPython(forwards), ] .. versionadded:: 1.8 You can also provide hints that will be passed to the :meth:`allow_migrate()` method of database routers as ``**hints``: .. snippet:: :filename: myapp/dbrouters.py class MyRouter(object): def allow_migrate(self, db, model, **hints): if 'target_db' in hints: return db == hints['target_db'] return True Then, to leverage this in your migrations, do the following:: from django.db import migrations def forwards(apps, schema_editor): # Your migration code goes here class Migration(migrations.Migration): dependencies = [ # Dependencies to other migrations ] operations = [ migrations.RunPython(forwards, hints={'target_db': 'default'}), ]
docs/index.txt +2 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,8 @@ manipulating the data of your Web application. Learn more about it below: * **Migrations:** :doc:`Introduction to Migrations<topics/migrations>` | :doc:`Operations reference <ref/migration-operations>` | :doc:`SchemaEditor <ref/schema-editor>` :doc:`SchemaEditor <ref/schema-editor>` | :doc:`Writing migrations <howto/writing-migrations>` * **Advanced:** :doc:`Managers <topics/db/managers>` | Loading
docs/topics/migrations.txt +6 −63 Original line number Diff line number Diff line Loading @@ -476,74 +476,13 @@ You can pass a second callable to want executed when migrating backwards. If this callable is omitted, migrating backwards will raise an exception. .. _data-migrations-and-multiple-databases: Data migrations and multiple databases ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When using multiple databases, you may need to figure out whether or not to run a migration against a particular database. For example, you may want to **only** run a migration on a particular database. In order to do that you can check the database connection's alias inside a ``RunPython`` operation by looking at the ``schema_editor.connection.alias`` attribute:: from django.db import migrations def forwards(apps, schema_editor): if not schema_editor.connection.alias == 'default': return # Your migration code goes here class Migration(migrations.Migration): dependencies = [ # Dependencies to other migrations ] operations = [ migrations.RunPython(forwards), ] .. versionadded:: 1.8 You can also provide hints that will be passed to the :meth:`allow_migrate()` method of database routers as ``**hints``: .. snippet:: :filename: myapp/dbrouters.py class MyRouter(object): def allow_migrate(self, db, model, **hints): if 'target_db' in hints: return db == hints['target_db'] return True Then, to leverage this in your migrations, do the following:: from django.db import migrations def forwards(apps, schema_editor): # Your migration code goes here class Migration(migrations.Migration): dependencies = [ # Dependencies to other migrations ] operations = [ migrations.RunPython(forwards, hints={'target_db': 'default'}), ] More advanced migrations ~~~~~~~~~~~~~~~~~~~~~~~~ If you're interested in the more advanced migration operations, or want to be able to write your own, see the :doc:`migration operations reference </ref/migration-operations>`. </ref/migration-operations>` and the "how-to" on :doc:`writing migrations </howto/writing-migrations>`. .. _migration-squashing: Loading Loading @@ -806,3 +745,7 @@ More information is available in the :doc:`The Migrations Operations Reference </ref/migration-operations>` Covers the schema operations API, special operations, and writing your own operations. :doc:`The Writing Migrations "how-to" </howto/writing-migrations>` Explains how to structure and write database migrations for different scenarios you might encounter.