使用SQL命令为Django Postgres应用程序创建新的OneToOneField

时间:2013-06-25 03:01:41

标签: python sql django postgresql django-models

我有一个带有几个django / python数据模型和相关postgres数据库表的应用程序。在这种情况下,重要的是UserFeed

我需要在Feed模型中的列与User模型中的项之间创建一对一的关系。如果我从头开始创建应用程序,我只需在我的user模型中定义Feed属性:

from django.contrib.auth.models import User

class Feed(models.Model):
    ...
    user = models.OneToOneField(User)

当然,由于我的应用程序已经运行,我需要根据我的django / python数据模型更改使用SQL命令修改我的数据库表。

我的问题是,SQL命令需要创建OneToOneField?我在这里使用了文档:http://www.djangobook.com/en/2.0/chapter10.html作为过去执行SQL命令的指南。但我担心的是,当谈到OneToOneFields时,我会搞砸一些事情。

django manage.py sqlall命令告诉我,我需要一个看起来像这样的列:

"user_id" integer NOT NULL UNIQUE REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED

1 个答案:

答案 0 :(得分:0)

对于那些有类似问题的人...我最终选择了south迁移库。 (在某些时候我还是想学习SQL命令)。 Getting south to work was fairly straightforward

$ pip install south
$ cd [pathtoproject]
$ vim [project]/settings.py

# make sure the following is reflected
INSTALLED_APPS += ('south',) 

$ ./manage.py syncdb
$ ./manage.py convert_to_south [myapp]
$ vim [myapp]/models.py

# make the changes to the data models. 
# south has to be initialized before these changes occur

class Feed(models.Model):
    ...
    user = models.OneToOneField(User)


$ ./manage.py schemamigration [myapp] --auto