Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
告诉Django的模型使用一组外键作为主键_Django_Django Models_Foreign Keys_Primary Key - Fatal编程技术网

告诉Django的模型使用一组外键作为主键

告诉Django的模型使用一组外键作为主键,django,django-models,foreign-keys,primary-key,Django,Django Models,Foreign Keys,Primary Key,我有个人和建议。现在,我想存储此人对提案的投票。为此,我将创建另一个类,它将提供一个中间表。目标是将某人与提案联系起来,并将投票方向与“向上投票”或“向下投票”关联起来。代码如下: class Persons(models.Model): #code class Proposal(models.Model): #code class Vote(models.Model): """A Person (who) votes up or down (direction) a Pro

我有个人和建议。现在,我想存储此人对提案的投票。为此,我将创建另一个类,它将提供一个中间表。目标是将某人与提案联系起来,并将投票方向与“向上投票”或“向下投票”关联起来。代码如下:

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

我希望投票的关键是谁,一起做什么。相反,Django创建了一个带有默认自动递增id的表作为PrimaryKey。如何将ForeignKey或一组ForeignKey设置为PrimaryKey?

Django ORM不支持复合主键:

不幸的是,您可能无法使用SQLAlchemy,因为标准ORM无法实现这一点

我也有一个类似的问题,我可以通过在课堂投票中使用unique_-together元来解决这个问题。共同阅读有关unique_的更多信息,请访问


我应该使用SQL命令强制执行它吗?也就是说,执行syncdb来创建数据库,然后运行一组SQL命令来删除默认id键,并使其他两个foreignkey成为我的PrimaryKey。你觉得呢?你必须这么做,因为Django ORM不可能为你做。我的建议是使用SQLAlchemy而不是Django ORM。还有一个问题:Django是否支持将一个ForeignKey升级为PrimaryKey?如果是,怎么做?嗯。如果您正在寻找一种编程解决方案,您可能可以使用South来实现,尽管我自己还没有尝试过。@DiAlex:ForeignKey是一个字段: