【问题标题】:How can I relate a model instance to another in django?如何在 django 中将模型实例与另一个模型实例相关联?
【发布时间】:2019-08-01 13:27:03
【问题描述】:

我正在尝试将模型实例与另一个实例相关联。例如,如果我有一个名为 Person 的模型,我想将一个人与他/她的父亲联系起来。我怎样才能做到这一点?

我没有证明代码,因为没有关于这个特定问题的代码。但上面的例子基本上就是我想要做的:

我有一个人模型(名为 Voter)我试图将每个实例与另一个实例作为亲戚(父亲、母亲、姐妹)联系起来

提前致谢。

【问题讨论】:

  • 外键?好吧,如果您没有找到任何有关此的代码,则说明您没有很好地搜索。我会给你一个提示,它是你的模型人上 self 的外键
  • 确保在模型中定义了人物关系(父亲、母亲等)字段,并为每个人物关系使用引用相同模型的外键。
  • 因缺乏努力而投反对票;尤其是你无法完成明确处理关系的 Django 教程。
  • 您好,欢迎来到 SO。您可能想阅读以下内容:stackoverflow.com/help/how-to-ask。您会注意到此页面中的第一个建议是“搜索”——这是您在发布之前很明显忘记做的事情。

标签: python django django-models database-relations


【解决方案1】:

您可以在模型中使用ManytoManyField 尝试此操作,它指向同一模型的实例。 有关关系的任何元数据都可以存储在其自己的“通过”表中。

class Person(models.Model):
    relation = models.ManyToManyField(Person, through=Relation)

class Relation(models.Model):
    relation1 = models.ForeignKey(Person)
    relation2 = models.ForeignKey(Person)
    type_of_relation = models.SmallPositiveIntegerField(choices=[(1,'Father'), (2, 'Sister')... etc])

在此处阅读有关通过表和 ManyToManyField 的更多信息: https://docs.djangoproject.com/en/2.1/topics/db/models/#extra-fields-on-many-to-many-relationships

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-27
    • 2018-03-21
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 2023-03-23
    • 2019-02-25
    • 1970-01-01
    相关资源
    最近更新 更多