django 1.7 migration generates wrong column name for foreign key to a one-to-one model

651 views
Skip to first unread message

Jack Peng

unread,
Feb 10, 2015, 1:22:08 AM2/10/15
to django...@googlegroups.com
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. Does anyone have similar experiences? Thanks.

Jack



Dhelbegor

unread,
Feb 10, 2015, 1:13:26 PM2/10/15
to django...@googlegroups.com
you using primary_key in one OnetoOneField,  please create other Field id = AutoField(primary_key=True)

ex:
class AgentOrderRejection(models.Model):
    id_agent
= models.AutoField(primary_key=True)
    agent
= models.ForeignKey(AgentProfile)
    user
= models.OneToOneField(USER_MODEL)


or use this:


sorry for my bad english

Att;

Adailton do nascimento
Reply all
Reply to author
Forward
0 new messages