djangodjango-mptt

How to display child element in Django MPTT?


I am trying to call parent and child element of a model, I have gone through the MPTT model documentation. I did as mentioned on the documentation, but my template is failing to print children

What can be the possible cause of this problem?

Here is my Views:

def category_view(request):
category = Categories.objects.all()
brands = Brands.objects.all()
context ={
    'category':category,
    'brands':brands,
       
            
}
return render(request,'./ecommerce/categories.html', context)

and Here is my template HTML:

{% load mptt_tags %}
     {% recursetree category%}
        <div class="category-wrap mb-4">
            <div class="category category-group-image br-sm">
                <div class="category-content">
                    <h4 class="category-name"><a href="">{{ node.name }}</a>
                    </h4>
                    
                    <ul class="category-list">
                        {% if not node.is_leaf_node %}
                        <li><a href="">{{children}}</a></li>
                        {% endif %}
                       
                    </ul>
                    
                </div>
                
            </div>
        </div>
        <!-- End of Category Wrap -->
        
        {% endrecursetree %}

Parent element is printed but children element is not being printed


Solution

  • Doing a lot of hit and trial, generic approach solved my problem. Others having similar problem could be benefited from my answer, hence posting the solution.

    Views:

    category = Categories.objects.filter(parent=None)
    

    Template:

    {% for category in categories %}
            <div class="category-wrap mb-4">
                <div class="category category-group-image br-sm">
                    <div class="category-content">
                        <h4 class="category-name"><a href="{% url 'ecommerce:item_by_category' category.slug|slugify %}">{{ category.name }}</a>
                        </h4>
                        
                        <ul class="category-list">
                            {% for cat in category.get_children %}              
                            <li><a href="/categories/{{ cat.id }}/">{{  cat.name }}</a> </li> 
                            {% endfor %}
                            
                          
                           
                            
                           
                        </ul>
                        
                    </div>
                    
                </div>
            </div>
            <!-- End of Category Wrap -->
            
            {% endfor %}