Django-mptt Дерево категорий
подскажите как вывести категории через load_mptt tags сейчас я вывел через циклы и как я могу обращаться к категории продукта product.category... в цикле продуктов под продуктом мне нужно вывести его категории
models.py
class Category(MPTTModel):
class Meta:
verbose_name = 'Категории'
verbose_name_plural = 'Категории'
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True,on_delete=models.CASCADE)
name = models.CharField(max_length=250,verbose_name='Имя категории')
slug = models.SlugField(unique=True)
def __str__(self):
try:
ancestors = self.get_ancestors(include_self=True)
ancestors = [i.name for i in ancestors]
except:
ancestors = [self.name]
return ' > '.join(ancestors[:len(ancestors) + 1])
def get_absolute_url(self):
return reverse('category_detail',kwargs={'slug': self.slug})
def get_fields_for_filter_in_template(self):
return ProductFeatures.objects.filter(
category=self,
use_in_filter=True
).prefetch_related('category').value('feature_key','feature_measure','feature_name','filter_type')
class Product(models.Model):
class Meta:
verbose_name = 'Продукт'
verbose_name_plural = 'Продукты'
category = TreeForeignKey(Category, blank=True, null=True, related_name='category', verbose_name="Выберите категорию",on_delete=models.CASCADE)
title = models.CharField(max_length=250,verbose_name='Наименоватние продукта')
slug=models.SlugField(unique=True)
image1 = models.ImageField(verbose_name='Главное изображение')
image2 = models.ImageField(null=True,blank=True, verbose_name='Изображение 2')
image3 = models.ImageField(null=True,blank=True, verbose_name='Изображение 3')
image4 = models.ImageField(null=True,blank=True, verbose_name='Изображение 4')
image5 = models.ImageField(null=True,blank=True, verbose_name='Изображение 5')
available = models.BooleanField(default=True)
description = models.TextField(verbose_name='Описание товара',null=True)
price = models.DecimalField(max_digits=10,decimal_places=2,verbose_name='Цена')
def __str__(self):
return self.title
def get_model_name(self):
return self.__class__.__name__.lower()
def get_absolute_url(self):
return reverse('product_detail',kwargs={'slug':self.slug})
views.py
def get(self,request,*args,**kwargs):
category = Category.objects.all()
products = Product.objects.all().order_by('-id')[:8]
for i in products:
print('huiogyfyufyi', i)
myimage= MyImage.objects.all()
randomProducts= Product.objects.all().order_by('?')[:10]
form= ContactForm(request.POST or None)
context= {
'category': category,
'products' : products,
'cart':self.cart,
'myimage':myimage,
'randomProducts':randomProducts,
'form':form
}
return render(request,'index.html',context)
index.html
{% for node in category.all %}
{% if node.level == 0 %}
<li class="menu-item menu-item-has-children has-mega-menu"><a href="{{ node.get_absolute_url }}">{{ node.name }}</a>
{% endif %}
<div class="mega-menu">
<div class="mega-wrap">
<div class="mega-column">
<ul class="mega-item mega-features">
<li><a href="product-listing.html">NEW RELEASES</a></li>
<li><a href="product-listing.html">FEATURES SHOES</a></li>
<li><a href="product-listing.html">BEST SELLERS</a></li>
<li><a href="product-listing.html">NOW TRENDING</a></li>
<li><a href="product-listing.html">SUMMER ESSENTIALS</a></li>
<li><a href="product-listing.html">MOTHER'S DAY COLLECTION</a></li>
<li><a href="product-listing.html">FAN GEAR</a></li>
</ul>
</div>
{% for item in node.children.all %}
<div class="mega-column">
<h4 class="mega-heading">{{item.name}} </h4>
{% for child in item.children.all %}
<ul class="mega-item">
<li><a href="{{ child.get_absolute_url }}">{{ child.name }}</a></li>
</ul>
{% endfor %}
</div>
{% endfor %}
</div>
</div>
</li>
{% endfor %}
</div>