我有一个带有几个django / python数据模型和相关postgres数据库表的应用程序。在这种情况下,重要的是User
和Feed
。
我需要在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
答案 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