簡體   English   中英

django-mptt模型實例不支持索引

[英]django-mptt model instance does not support indexing

我正在嘗試使用django-mptt實現一個簡單的文件瀏覽器應用程序

這是我的models.py

class RootMPTT(MPTTModel):
    name = models.CharField(max_length =255)
    parent = TreeForeignKey('self',null=True,blank=True,related_name='children',db_index=True)

class Doc(models.Model):
    file = models.FileField(upload_to=set_upload_path_MPTT)
    belongs_to = models.ForeignKey(RootMPTT)

我正在嘗試使用教程部分中的代碼以html形式顯示樹視圖

  {% load mptt_tags %}
<ul>
    {% recursetree nodes %}
        <li>
            {{ node.name }}
            {% if not node.is_leaf_node %}
                <ul class="children">
                    {{ children }}
                </ul>
            {% endif %}
        </li>
    {% endrecursetree %}
</ul>

我從Django得到以下錯誤

'RootMPTT' object does not support indexing

主要是因為'nodes'變量是下面的

nodes = RootMPTT.objects.get(pk=casenum)

如果我將其更改為

nodes = RootMPTT.objects.all()

html呈現良好。 但是我所要做的就是獲取單個節點的后代,而不是所有根節點。

get_children我可以通過獲取get_children方法來獲取孩子,並在html中手動顯示他們。 但想知道是否有使用遞歸樹的方法

recursetree采用查詢集或節點列表,而不是單個節點。 如果您只想顯示一棵樹,則只需在其中設置一棵樹的查詢集即可:

nodes = RootMPTT.objects.get(pk=casenum).get_descendants(include_self=True)

暫無
暫無

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

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