2013-03-15 144 views
0

我有Person s和Proposal s。現在我想存儲投票Proposals。爲此,我將創建另一個提供「中介」表的課程。目標是鏈接PersonProposal並將投票direction(upvote或downvote)相關聯。代碼如下:Tell Django的模型將主鍵用作一組外鍵

class Persons(models.Model): 
    #code 
class Proposal(models.Model): 
    #code 
class Vote(models.Model): 
    """A Person (who) votes up or down (direction) a Proposal (what).""" 
    who = models.ForeignKey(Person) 
    what = models.ForeignKey(Proposal) 
    direction = models.BooleanField() # true = upvote = vote in favor 

我想投票的PrimaryKey是(誰,什麼)在一起。相反,Django創建了一個默認AUTO-INCREMENTED id作爲PrimaryKey的表。 如何將ForeignKey(或一組ForeignKey)設置爲PrimaryKey?

回答

1
+0

我應該使用SQL命令來執行它嗎?也就是說,執行'syncdb'來創建數據庫,然後運行一組SQL命令來刪除默認的'id'鍵,並將其他兩個ForeignKeys作爲我的PrimaryKey。你怎麼看? – dialex 2013-03-15 19:41:11

+1

你必須這麼做,因爲Django ORM無法爲你做到這一點。我的建議是使用SQLAlchemy而不是Django ORM。 – Brandon 2013-03-15 19:42:41

+0

只有一個問題:Django是否支持將**一個** ForeignKey提升爲PrimaryKey?如果是這樣,怎麼樣? – dialex 2013-03-15 19:44:09

2

不幸的是你可以使用的SQLAlchemy因爲標準的ORM是不能夠這樣被卡住。