Python 从同一表中获取具有级别的父子关系

Python 从同一表中获取具有级别的父子关系,python,django,parent-child,table-relationships,self-referencing-table,Python,Django,Parent Child,Table Relationships,Self Referencing Table,嗨,我是django和python的新手 # function for fecthing the child def get_childern(request, username): Q = list(Profile.objects.filter(sponsor_id__exact=username)) populate(request, Q, username) # Iterate the Queryset def populate(request, quesryset,

嗨,我是django和python的新手

# function for fecthing the child
def get_childern(request, username):
    Q = list(Profile.objects.filter(sponsor_id__exact=username))
    populate(request, Q, username)


# Iterate the Queryset 
def populate(request, quesryset, username):
    if quesryset:
        messages.success(request, username+' has '+str(len(quesryset))+' child')
        messages.info(request, quesryset)
        for user in quesryset:
            get_childern(request, user.user_id)
    else:
        messages.warning(request, 'User '+username+' has no child')
        return False

# calling all children 
get_childern(request, username)

我想添加一个级别,如何进一步分解它

请帮助我,投入大量的时间和精力。
感谢大家:)

我找到了解决方案如果有人想提供一些反馈或更好的解决方案,请在这里发表评论。感谢大家:)

#用于返回子查询集
def get_childern(请求,用户名):
Q=Profile.objects.filter(赞助商id\uuuuuuuuuuuuuuuuuuuuuuuique=用户名)
返回Q
级别=整数(1)#根据需要设置
树_集={}
#迭代queryset并调用它自己
#递归-将级别设置为“控制”
def iterate_对象(请求,quesryset):
全局树集合
外部计数=整数(0)
内部计数=整数(0)
级别树=[]
对于quesryset中的用户:
外部计数=外部计数+1
#messages.info(请求、用户、用户id)
Qs=get_childern(请求、用户、用户id)
如果Qs:
对于Qs中的儿童:
内部计数=内部计数+1
级别树追加(子级)
#计数=计数+长度(Qs)
#消息。警告(请求、Qs)
其他:
#消息。警告(请求“无子项”)
通过
其他:
#messages.error(请求'Total child at level 2=>'+str(count))
#messages.info(请求、外部计数)
#消息。成功(请求、内部计数)
全球一级
级别=级别+1
#设置数值以控制液位

如果有人想提供一些反馈或更好的解决方案,请在此处发表评论。感谢所有人:)如果您有解决方案,您必须在答案部分发布。感谢@eyllanescI正在开发此功能,一旦完成,我将更新代码和解释。
# for return a child query-set
def get_childern(request, username):
    Q = Profile.objects.filter(sponsor_id__exact=username)
    return Q


level = int(1) # set according to need 
tree_set = {}


# iterate the queryset and call itself
# recursion - set the level to control 
def iterate_object(request, quesryset):
    global tree_set
    outer_count = int(0)
    inner_count = int(0)
    level_tree = []
    for users in quesryset:
        outer_count = outer_count + 1
        # messages.info(request, users.user_id)
        Qs = get_childern(request, users.user_id)
        if Qs:
            for child in Qs:
                inner_count = inner_count + 1
                level_tree.append(child)

            # count = count + len(Qs)
            # messages.warning(request, Qs)
        else:
            # messages.warning(request, 'No child')
            pass
    else:
        # messages.error(request, 'Total child at level 2 => ' + str(count))
        # messages.info(request, outer_count)
        # messages.success(request, inner_count)
        global level
        level = level + 1
        # set the numeric value to control the level
        if level <= 10: 
            tree_set.update({level: level_tree})
            iterate_object(request, level_tree)
            return tree_set
        else:
            # messages.warning(request, 'else part')
            pass