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 25817,Unable to rename a field reference in foreign key 'to_field',Simon Kelly,nobody,"Steps to reproduce: 1. Create a model with a foreign key referencing another model's field via the 'to_field' arg. 2. Generate the initial migration {{{#!python class Bar(models.Model): bar_id = models.CharField(max_length=255, db_index=True, unique=True) class Bazz(models.Model): bar = models.ForeignKey(Bar, to_field='bar_id') }}} 3. Rename the field referenced in 'to_field' and create a migration for the change Rename 'bar_id' to 'external_id': {{{#!python class Bar(models.Model): external_id = models.CharField(max_length=255, db_index=True, unique=True) class Bazz(models.Model): bar = models.ForeignKey(Bar, to_field='external_id') }}} Migration: {{{#!python operations = [ migrations.RenameField( model_name='bar', old_name='bar_id', new_name='external_id', ), migrations.AlterField( model_name='bazz', name='bar', field=models.ForeignKey(to='form_processor.Bar', to_field=b'external_id'), preserve_default=True, ), ] }}} 4. Run the migration Error: {{{ Traceback (most recent call last): File ""./manage.py"", line 73, in execute_from_command_line(sys.argv) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/core/management/__init__.py"", line 385, in execute_from_command_line utility.execute() File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/core/management/__init__.py"", line 377, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/core/management/base.py"", line 288, in run_from_argv self.execute(*args, **options.__dict__) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/core/management/commands/sqlmigrate.py"", line 30, in execute return super(Command, self).execute(*args, **options) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/core/management/base.py"", line 338, in execute output = self.handle(*args, **options) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/core/management/commands/sqlmigrate.py"", line 61, in handle sql_statements = executor.collect_sql(plan) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/db/migrations/executor.py"", line 82, in collect_sql migration.apply(project_state, schema_editor, collect_sql=True) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/db/migrations/migration.py"", line 108, in apply operation.database_forwards(self.app_label, schema_editor, project_state, new_state) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/db/migrations/operations/fields.py"", line 139, in database_forwards schema_editor.alter_field(from_model, from_field, to_field) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/db/backends/schema.py"", line 445, in alter_field old_db_params = old_field.db_parameters(connection=self.connection) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/db/models/fields/related.py"", line 1787, in db_parameters return {""type"": self.db_type(connection), ""check"": []} File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/db/models/fields/related.py"", line 1778, in db_type rel_field = self.related_field File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/db/models/fields/related.py"", line 1684, in related_field return self.foreign_related_fields[0] File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/db/models/fields/related.py"", line 1442, in foreign_related_fields return tuple(rhs_field for lhs_field, rhs_field in self.related_fields) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/db/models/fields/related.py"", line 1429, in related_fields self._related_fields = self.resolve_related_fields() File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/db/models/fields/related.py"", line 1422, in resolve_related_fields else self.rel.to._meta.get_field_by_name(to_field_name)[0]) File ""/home/skelly/.virtualenvs/hq/local/lib/python2.7/site-packages/django/db/models/options.py"", line 420, in get_field_by_name % (self.object_name, name)) django.db.models.fields.FieldDoesNotExist: Bar has no field named 'bar_id' }}}",Bug,closed,Migrations,dev,Normal,fixed,to_field rename,Simon Charette,Ready for checkin,1,0,0,0,0,0