mirror of https://github.com/django/django.git
113 lines
2.2 KiB
Plaintext
113 lines
2.2 KiB
Plaintext
|
============
|
||
|
SchemaEditor
|
||
|
============
|
||
|
|
||
|
Django's migration system is split into two parts; the logic for calculating
|
||
|
and storing what operations should be run (``django.db.migrations``), and the
|
||
|
database abstraction layer that turns things like "create a model" or
|
||
|
"delete a field" into SQL - which is the job of the ``SchemaEditor``.
|
||
|
|
||
|
It's unlikely that you will want to interact directly with ``SchemaEditor`` as
|
||
|
a normal developer using Django, but if you want to write your own migration
|
||
|
system, or have more advanced needs, it's a lot nicer than writing SQL.
|
||
|
|
||
|
Each database backend in Django supplies its own version of ``SchemaEditor``,
|
||
|
and it's always accessible via the ``connection.schema_editor()`` context
|
||
|
manager::
|
||
|
|
||
|
with connection.schema_editor() as schema_editor:
|
||
|
schema_editor.delete_model(MyModel)
|
||
|
|
||
|
It must be used via the context manager as this allows it to manage things
|
||
|
like transactions and deferred SQL (like creating ``ForeignKey`` constraints).
|
||
|
|
||
|
It exposes all possible operations as methods, that should be called in
|
||
|
the order you wish changes to be applied. Some possible operations or types
|
||
|
of change are not possible on all databases - for example, MyISAM does not
|
||
|
support foreign key constraints.
|
||
|
|
||
|
Methods
|
||
|
=======
|
||
|
|
||
|
execute
|
||
|
-------
|
||
|
|
||
|
::
|
||
|
|
||
|
execute(sql, params=[])
|
||
|
|
||
|
Executes the SQL statement passed in, with parameters if supplied. This
|
||
|
is a simple wrapper around the normal database cursors that allows
|
||
|
capture of the SQL to a ``.sql`` file if the user wishes.
|
||
|
|
||
|
create_model
|
||
|
------------
|
||
|
|
||
|
::
|
||
|
|
||
|
create_model(model)
|
||
|
|
||
|
|
||
|
delete_model
|
||
|
------------
|
||
|
|
||
|
::
|
||
|
|
||
|
delete_model(model)
|
||
|
|
||
|
|
||
|
alter_unique_together
|
||
|
---------------------
|
||
|
|
||
|
::
|
||
|
|
||
|
alter_unique_together(model, old_unique_together, new_unique_together)
|
||
|
|
||
|
|
||
|
alter_index_together
|
||
|
--------------------
|
||
|
|
||
|
::
|
||
|
|
||
|
alter_index_together(model, old_index_together, new_index_together)
|
||
|
|
||
|
|
||
|
alter_db_table
|
||
|
--------------
|
||
|
|
||
|
::
|
||
|
|
||
|
alter_db_table(model, old_db_table, new_db_table)
|
||
|
|
||
|
|
||
|
alter_db_tablespace
|
||
|
-------------------
|
||
|
|
||
|
::
|
||
|
|
||
|
alter_db_tablespace(model, old_db_tablespace, new_db_tablespace)
|
||
|
|
||
|
|
||
|
add_field
|
||
|
---------
|
||
|
|
||
|
::
|
||
|
|
||
|
add_field(model, field)
|
||
|
|
||
|
|
||
|
remove_field
|
||
|
------------
|
||
|
|
||
|
::
|
||
|
|
||
|
remove_field(model, field)
|
||
|
|
||
|
|
||
|
alter_field
|
||
|
------------
|
||
|
|
||
|
::
|
||
|
|
||
|
alter_field(model, old_field, new_field, strict=False)
|