簡體   English   中英

如何在Django模型中查詢樹結構

[英]How to query a tree structure in Django model

我在Django模型中具有以下樹結構

Main_Comment
    id
    comment_list [Comment]


Comment
    id
    parent_comment [Main_Comment or Comment]
    child_comment_list [Comment]

如果給出main_comment ID,您將如何遍歷Django查詢中的整個樹? 我知道如果所有Comment模型實例都具有主注釋,則可以檢索所有表並按main_comment進行過濾,但是我想保留嵌套注釋的嵌套結構。 有辦法嗎?

專門針對您的模型,如果您希望使用Django查詢,則可以嘗試遞歸方法來讀取給定main_comment_id的所有注釋

以下是深度優先的查詢樹結構的方法

main_comment = Main_Comment.objects.get(id=main_comment_id)
current_depth = 0
tree_comments = traverse_comments(main_comment, current_depth)

def traverse_comments(comment, depth)
    if comment.comment_list.length == 0:
        return [{comment: comment, depth: depth}]
    else:
        traversed_comments = [{comment: comment, depth: depth}]
        new_depth = depth + 1
        for child_comment in comment.comment_list:
            traversed_comments = traversed_comments +traverse_comments(child_comment, new_depth)
        return traversed_comments                

為此,您需要編輯注釋模型列,命名為:

Comment
    id
    parent_comment [Main_Comment or Comment]
    comment_list [Comment]

您也可以使用Django來使用原始SQL查詢。檢查一下,可能會有所幫助: https : //github.com/Husseny/treebirds檢查nestedcomments /中的models.py文件

暫無
暫無

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

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