【问题标题】:How can I create a model with compound foreign key?如何创建具有复合外键的模型?
【发布时间】:2011-12-13 23:53:10
【问题描述】:

任何人都知道如何创建一个具有另一个模型的复合外键的模型。

例如

用户信息:userId密码、密钥、...

地理信息:id、userId密码、storeName、...

在上述示例模型中。想要使用两个字段(userId、password)将 GeoInfo 链接到 UserInfo。

注意:我知道如何用一个外键链接两个模型。

感谢任何指导。

更新1 我找到了这篇文章 -> Django or similar for composite primary keys

不幸的是,由于要求(客户的规范)在 GeoInfo 中存在两个字段(UserInfo.userId, UserInfo.password),因此接受的答案不适用于我的情况。

更新2 看来,django 不支持复合外键。有什么解决方法吗?

【问题讨论】:

  • 请不要在标题中添加标签。

标签: python django-models postgis geodjango compound-key


【解决方案1】:

是什么让您无法让两个 ForeignKey 字段引用模型 A?

例如

class Author(models.Model):
    name = models.CharField(max_length=50)

class Book(models.Model):
    title = models.CharField(max_length=50)
    author = models.ForeignKey(Author, related_name="primary_authors")
    co_author = models.ForeignKey(Author, related_name ="co_authors")

确保使用“related_name”来防止冲突。如果这不能回答你的问题,提供一个你正在尝试做的例子会有所帮助......

【讨论】:

  • 我不明白primary_authorsco_authors 在哪里?我将更新我的帖子以使用实际名称。
  • 两个外键与复合外键不同。
  • >是什么让你无法拥有两个 ForeignKey 字段 -> 出于某种原因客户端需要它。
猜你喜欢
  • 2011-05-10
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 2012-02-17
  • 2014-11-11
  • 2017-07-22
  • 1970-01-01
相关资源
最近更新 更多