如何在Django中将一个模型实例与另一个实例关联?

时间:2019-03-11 09:04:47

标签: python django django-models database-relations

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

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

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

先谢谢了。

1 个答案:

答案 0 :(得分:0)

您可以在模型中使用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