Opened 10 years ago
Closed 10 years ago
#24314 closed Bug (invalid)
django 1.7 migration problem: foreign key column to an one-to-one model is misidentified as "id"
Reported by: | jackxpeng | Owned by: | nobody |
---|---|---|---|
Component: | Migrations | Version: | 1.7 |
Severity: | Normal | Keywords: | migration, one-to-one, foreign key |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I ran into this problem trying to run manage.py test. The error I get looks like this:
ALTER TABLE "quote_agentorderrejection" ADD CONSTRAINT "quote_agentor_agent_id_1388a6f8215473de_fk_user_agentprofile_id" FOREIGN KEY ("agent_id") REFERENCES "user_agentprofile" ("id") DEFERRABLE INITIALLY DEFERRED
Traceback (most recent call last):
File "/home/jack/Envs/envp1/lib/python3.4/site-packages/django/db/backends/utils.py", line 66, in execute
return self.cursor.execute(sql, params)
psycopg2.ProgrammingError: column "id" referenced in foreign key constraint does not exist
I realize this is similar to https://code.djangoproject.com/ticket/23415, which has been fixed. However, my case is a little different.
class AgentOrderRejection(models.Model): agent = models.ForeignKey(AgentProfile)
But AgentProfile itself is a one-to-one model to the user model, so its primary key is user_id, not id.
user = models.OneToOneField(USER_MODEL, primary_key=True)
But django 1.7's migration incorrectly identifies id as the primary key and looks for it in the agentprofile model and fails. Thanks.
Change History (2)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
Never mind. I only see this problem when I try to run manage.py test. I created a test case and it worked. I also suspected it was because of django-pgfields but it also worked. So I'm still trying to find out what the problem is.