繁体   English   中英

在Django中与N的关系1

[英]Relation 1 to N in Django

我是一名新的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')

我怎样才能做到这一点?

class Son: 
    father = models.ForeignKey(Father)

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

你可以让它变得更好

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

现在,它将为父亲实例提供一个名为sons的引用,该引用在列表中有很多儿子(不确定您为什么选择父亲/儿子而不是父母/孩子,而是meh)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM