Django 中的关系 1 到 N

Relation 1 to N in Django

我是一名新 python 开发人员。现在我正在学习 Django,但遇到了一些麻烦。

例如在Java中,我可以有一个1对N的关系,像这样:

public class Son(){ 
   // some things
}

public class Father(){ 
   Son son[]; 
   // some things
}

但是,如果我需要在 Django 中建模,我该怎么做?

我试过下面的代码,但它只提供一对一的关系:

class Father: 
    father = models.ForeignKey('Son')

我该怎么做?

class Son: 
    father = models.ForeignKey(Father)

这样任何一个儿子只能有一个父亲...但是任何一个父亲可以有多个儿子,这是一个多对一的关系

你还可以做得更好

class Son:
    father_id = Column(Integer, ForeignKey('father.id'))
    father = relationship("Father", backref="sons")

现在这将为父亲实例提供一个名为 sons 的引用,该引用在一个列表中有很多儿子(不知道你为什么选择 father/son 而不是 parent/child 但是嗯)

这是最好的方法(始终定义 related_name):

class Son(models.Model): 
    father = models.ForeignKey(Father, related_name="sons")

那么你可以这样做:

dad = Father.objects.get(id=5)
for son in dad.sons.all():
     print son.name