我与表有父/子关系。看起来像这样。
class Person(models.Model):
Name = models.CharField()
class ParentChild(models.Model):
child = models.ForeignKey('Person', related_name='child')
parent = models.ForeignKey('Person', related_name='parent')
validfrom = models.DateTimeField(blank=True, null=True)
validto = models.DateTimeField(blank=True, null=True)
我正在尝试查询整个树并创建一个json以发送到模板。 因此,对于每个人,我都在考虑使用函数来查询孩子,并且每个孩子都使用相同的函数来查询该孩子是否有孩子。
所以这是我的功能
def getChildren(parentID):
try:
children = Person.objects.filter(parent=parentID)
addJson = 'children: ['
for a in children:
addJson = addJson + '{text: { name: "Child '+str(a.id)+'" }},'
addJson = getChildren(str(a.id))
return addJson
except:
return addJson
这只会让我有一个孩子,仅此而已。所以我猜测它不可能自己调用,或者函数必须在被再次调用之前完成。
我现在很困难。很受欢迎!
答案 0 :(得分:0)
我解决了这个问题。我没有注意到该查询是针对错误表格中的PK。
def getChildren(parentID, jsonData):
try:
qChildren = ParentChild.objects.filter(parent=parentID).values('child')
addJson = jsonData + 'children: ['
for a in qChildren:
addJson = addJson + '{text: { name: "Child ' + str(a['child']) + '" }},'
addJson = getChildren(str(a['child']), addJson)
addJson = addJson + ']'
return addJson
except:
return None