2013-03-15 91 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是不能够这样被卡住。