﻿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
29245	ForeignKeyField Renaming leads Remove and AddField instead of RenameField Migration	Taqi Abbas	nobody	"Given this field in the model:

{{{
class Answer(models.Model):
	question = models.ForeignKey(question_models.Question, on_delete=models.CASCADE, null=True, blank=True)
	...
}}}


I changed this to:

{{{
class Answer(AbstractModel):
	_question = models.ForeignKey(question_models.Question, db_column='question_id', on_delete=models.CASCADE, null=True, blank=True)
	...
}}}


the resulting migration was:

{{{
	...
        migrations.RemoveField(
            model_name='answer',
            name='question',
        ),
        migrations.AddField(
            model_name='answer',
            name='_question',
            field=models.ForeignKey(blank=True, db_column='question_id', null=True, on_delete=django.db.models.deletion.CASCADE, to='survey.Question'),
        ),
	...

}}}

whereas it should have been the following. 

{{{
	...
        migrations.RenameField(
            model_name='answer',
            old_name='question',
            new_name='_question',
        ),
	...

}}}

But when I manually changed to the above, I get the following error:

{{{
ProgrammingError: column survey_answer.question_id does not exist
LINE 1: ...swer"".""updated_on"", ""survey_answer"".""is_deleted"", ""survey_an...
                                                             ^
HINT:  Perhaps you meant to reference the column ""survey_answer._question_id"".

}}}

After this, I ran makemigrations again, without changing any model and this time it made the following:

{{{
        migrations.AlterField(
            model_name='answer',
            name='_question',
            field=models.ForeignKey(blank=True, db_column='question_id', null=True, on_delete=django.db.models.deletion.CASCADE, to='survey.Question'),
        ),

}}}


The database was PostgreSQL.
"	Cleanup/optimization	closed	Migrations	dev	Normal	fixed	ForeignKey, RenameField, db_column		Accepted	1	0	0	0	0	0
