mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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)
 |