簡體   English   中英

從同一個表中獲取具有級別的父子關系

[英]Fetch parent child relation with level from the same 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, 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)

我想添加級別,如何進一步分解它。

請幫助我,投入大量時間和精力。 謝謝大家:)

如果有人想提供一些反饋或想法以獲得更好的解決方案,我找到了解決方案,請在此處發表評論。 給大家點贊:)

# 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM