练习在函数内部调用函数

2024-10-03 06:27:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我与表有父/子关系。看起来像这样。你知道吗

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

这只给了我一个孩子,再也没有了。所以我猜不可能调用它自己,或者一个函数必须在被再次调用之前完成。你知道吗

我现在很困。欢迎有想法!你知道吗


Tags: 对象函数namechildtruemodelmodelsclass
1条回答
网友
1楼 · 发布于 2024-10-03 06:27:18

我解决了这个问题。我没有注意到这个查询是针对错误表中的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

相关问题 更多 >