2013-06-25 52 views
0

我有一個應用程序,有幾個Django/python數據模型和相關的postgres數據庫表。在這種情況下,重要的是UserFeed使用SQL命令爲Django Postgres應用程序創建一個新的OneToOneField

我需要在我的Feed模型中的列和我的用戶模型中的項目之間創建一對一關係。如果我是從頭開始的應用程序,我只想在我的Feed模型定義user財產如:

from django.contrib.auth.models import User 

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

當然,作爲我的應用程序已經正常工作,我需要修改與SQL命令我的數據庫表按照我的django/python數據模型的變化。

我的問題是,什麼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

這當然需要我配置庫並學習他們的API。我很懶,我想要一個一次性的SQL命令。但基於對這個問題的暗淡反應,我想我可能需要學習一個移植應用程序。我聽說南方很好。 – eblahm

回答

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 
相關問題