我们从Python开源项目中,提取了以下3个代码示例,用于说明如何使用django.db.migrations.RemoveField()。
def test_remove_field(self): project_state = self.set_up_test_model() operation = migrations.RemoveField('Pony', 'pink') new_state = project_state.clone() operation.state_forwards('tests', new_state) self.assertColumnExists('tests_pony', 'pink') with connection.schema_editor() as editor: operation.database_forwards('tests', editor, project_state, new_state) self.assertColumnNotExists('tests_pony', 'pink') with connection.schema_editor() as editor: operation.database_backwards('tests', editor, new_state, project_state) self.assertColumnExists('tests_pony', 'pink')
def test_remove_foreign_key_field(self): project_state = self.set_up_test_model() operation = migrations.RemoveField('Rider', 'pony') new_state = project_state.clone() operation.state_forwards('tests', new_state) self.assertColumnExists('tests_rider', 'pony_id') with connection.schema_editor() as editor: operation.database_forwards('tests', editor, project_state, new_state) self.assertColumnNotExists('tests_rider', 'pony_id') with connection.schema_editor() as editor: operation.database_backwards('tests', editor, new_state, project_state) self.assertColumnExists('tests_rider', 'pony_id')
def remove_field(field, filters: List[str]): """Removes the specified field from a model. Arguments: field: The field to remove from a model. filters: List of strings to filter SQL statements on. """ model = define_fake_model({'title': field}) project = migrations.state.ProjectState.from_apps(apps) with connection.schema_editor() as schema_editor: execute_migration(schema_editor, [ migrations.CreateModel( model.__name__, fields=[ ('title', field.clone()) ] ) ], project) with filtered_schema_editor(*filters) as (schema_editor, calls): execute_migration(schema_editor, [ migrations.RemoveField( model.__name__, 'title' ) ], project) yield calls