1

Django/python の世界の初心者として、オブジェクトに子があるかどうかを確認する方法を見つけることができません。

例:

Class MyItems
        title = models.CharField(max_length=50)
        parent = models.ForeignKey('self',null=True, blank=True,related_name='subitems')

次に、私のテンプレートで:

{% for item in MyItems %}
<li> {{ item.title }} </li>
    {% if item **IS A PARENT OF CHILDREN** %}
        <p>This is what I want</p>
    {% endif %}
{% endfor %}  

アイテムに親があるかどうかは問題ありませんが、逆に、アイテムが他のアイテムの親であるかどうかを確認するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

2

質問を正しく理解していれば、次のように簡単なはずです。

{% if item.subitems.exists %}
于 2012-09-29T14:38:26.857 に答える
2

オブジェクト間の再帰的な親子関係が必要な場合は、MPTT の使用を検討する必要があります

http://django-mptt.github.com/django-mptt/

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

ここのクックブックで話しました: https://code.djangoproject.com/wiki/ModifiedPreorderTreeTraversal

MPTT がデータ レベルでどのように機能するかを理解するには、http://en.wikipedia.org/wiki/Nested_set_modelをご覧ください。

明らかな解決策の問題は、追加のレベルの子ごとに別のクエリが必要になることです。これは非常に非効率的です。

# this is an additional query AND will not be recursive.
{% if item.child_set.all.count > 0 %} 
于 2012-09-05T15:20:57.610 に答える