Django中的关系1到N.

时间:2015-01-05 23:51:47

标签: python django django-models

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

例如,在Java中,我可以有一个1到N的关系,如下所示:

public class Son(){ 
   // some things
}

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

但是,如果我需要在Django中对它进行建模,我该怎么做呢?

我尝试了下面的代码,但它只提供了1比1的关系:

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

我该怎么做?

2 个答案:

答案 0 :(得分:3)

class Son: 
    father = models.ForeignKey(Father)
这样任何一个儿子只能有一个父亲......但是任何一个父亲都可以有很多儿子,这是多对一的关系

你可以让它变得更好

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

这将为父实例提供名为sons的引用,这些引用在列表中有许多子(不知道为什么你选择父/子而不是父/子,但是meh)

答案 1 :(得分:-1)

这是最好的方法(总是定义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