﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
22395	Deleting a model and fields that relate to it results in ValueError: Related model '<app>.<model>' cannot be resolved	Stephen Burrows	nobody	"This seems to happen because a single migration is created which both deletes the model and the fields that reference it - but the fields are (sometimes?) deleted second, so the model is already ""gone"" by the time the migration gets that far.

Workaround is to move the field deletions up in the migrations file to *before* the model deletion.


Generated migration (relevant bits):
{{{
[...]
class Migration(migrations.Migration):

    operations = [

        migrations.DeleteModel(
            name='House',
        ),
        migrations.RemoveField(
            model_name='housingslot',
            name='house',
        ),
        migrations.RemoveField(
            model_name='person',
            name='house',
        ),
    ]

}}}

Traceback:

{{{
  File ""./manage.py"", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "".../django/django/core/management/__init__.py"", line 427, in execute_from_command_line
    utility.execute()
  File "".../django/django/core/management/__init__.py"", line 419, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "".../django/django/core/management/base.py"", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "".../django/django/core/management/base.py"", line 337, in execute
    output = self.handle(*args, **options)
  File "".../django/django/core/management/commands/migrate.py"", line 145, in handle
    executor.migrate(targets, plan, fake=options.get(""fake"", False))
  File "".../django/django/db/migrations/executor.py"", line 60, in migrate
    self.apply_migration(migration, fake=fake)
  File "".../django/django/db/migrations/executor.py"", line 94, in apply_migration
    migration.apply(project_state, schema_editor)
  File "".../django/django/db/migrations/migration.py"", line 97, in apply
    operation.database_forwards(self.app_label, schema_editor, project_state, new_state)
  File "".../django/django/db/migrations/operations/fields.py"", line 36, in database_forwards
    field,
  File "".../django/django/db/backends/sqlite3/schema.py"", line 117, in add_field
    self._remake_table(model, create_fields=[field])
  File "".../django/django/db/backends/sqlite3/schema.py"", line 84, in _remake_table
    self.create_model(temp_model)
  File "".../django/django/db/backends/schema.py"", line 191, in create_model
    definition, extra_params = self.column_sql(model, field)
  File "".../django/django/db/backends/schema.py"", line 108, in column_sql
    db_params = field.db_parameters(connection=self.connection)
  File "".../django/django/db/models/fields/related.py"", line 1758, in db_parameters
    return {""type"": self.db_type(connection), ""check"": []}
  File "".../django/django/db/models/fields/related.py"", line 1749, in db_type
    rel_field = self.related_field
  File "".../django/django/db/models/fields/related.py"", line 1655, in related_field
    return self.foreign_related_fields[0]
  File "".../django/django/db/models/fields/related.py"", line 1414, in foreign_related_fields
    return tuple(rhs_field for lhs_field, rhs_field in self.related_fields)
  File "".../django/django/db/models/fields/related.py"", line 1401, in related_fields
    self._related_fields = self.resolve_related_fields()
  File "".../django/django/db/models/fields/related.py"", line 1386, in resolve_related_fields
    raise ValueError('Related model %r cannot be resolved' % self.rel.to)
ValueError: Related model 'brambling.House' cannot be resolved
}}}"	Bug	closed	Migrations	2.0	Normal	fixed		Stephen Burrows	Accepted	0	0	0	0	0	0
