﻿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
31688	Fail to rename and reuse field when using postgres	Eran Keydar	nobody	"The scenario is the following.

1. model with foreign key pointer point to Model1
2. pointer in rename to old_pointer ( + making rename migration)
3. adding pointer again but not points to Model2
getting an error that index is already exists.

This fails on Postgres, when working with sqlite it is ok.

Below is the relevant code:

Step 1:

{{{
class Model1(models.Model):
    name = models.CharField(max_length=30)


class Model2(models.Model):
    name2 = models.CharField(max_length=30)


class MainModel(models.Model):
    pointer = models.ForeignKey(Model1, null=True, on_delete=models.CASCADE)

}}}

Then running makemigrations + migrate.

Step 2:

Changing the pointer to old_pointer then running makemigrations + migrate (+ yes for the rename question)


{{{
class MainModel(models.Model):
    old_pointer = models.ForeignKey(Model1, null=True, on_delete=models.CASCADE)
}}}



Step 3:
Adding back the pointer field, now to Model2

{{{

class MainModel(models.Model):
    old_pointer = models.ForeignKey(Model1, null=True, on_delete=models.CASCADE)
    pointer = models.ForeignKey(Model2, null=True, on_delete=models.CASCADE)
}}}

running makemigrations and then migrate yields the following error:


{{{
return self.cursor.execute(sql, params)
psycopg2.errors.DuplicateTable: relation ""app1_mainmodel_pointer_id_c7a78539"" already exists
}}}








"	Bug	closed	Migrations	3.0	Normal	duplicate			Unreviewed	0	0	0	0	0	0
