我是一名新的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')
我该怎么做?
答案 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