Как отобразить категорию для конкретного товара на странице списка товаров? - Django
Я пытаюсь отобразить страницу списка продуктов с атрибутами продуктов вместе с категорией, которая является полем MPTT. Я хочу отобразить категорию, присвоенную данному продукту, на странице списка продуктов. Как я могу этого добиться?
Модели
class Category(MPTTModel):
"""
Inventory Category table implimented with MPTT
"""
name = models.CharField(
max_length=100,
null=False,
unique=False,
blank=False,
verbose_name=_("category name"),
help_text=_("format: required, max-100"),
)
slug = AutoSlugField(populate_from='name')
cat_img = models.ImageField(upload_to='images/categories/')
parent = TreeForeignKey(
"self",
on_delete=models.PROTECT,
related_name="children",
null=True,
blank=True,
unique=False,
verbose_name=_("parent of category"),
help_text=_("format: not required"),
)
class MPTTMeta:
order_insertion_by = ["name"]
class Meta:
verbose_name = _("product category")
verbose_name_plural = _("product categories")
def __str__(self):
return self.name
class Product(models.Model):
"""
Product details table
"""
product_id = models.UUIDField(default=uuid.uuid4, editable=False)
sku = models.CharField(max_length=255, blank=True, null=True)
name = models.CharField(
max_length=255,
unique=False,
null=False,
blank=False,
verbose_name=_("product name"),
help_text=_("format: required, max-255"),
)
slug = AutoSlugField(populate_from='name')
price = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True)
description = models.TextField(
unique=False,
null=True,
blank=True,
verbose_name=_("product description"),
help_text=_("format: required"),
)
prd_img = models.ImageField(upload_to='images/products/', null=True, blank=True)
category = TreeManyToManyField(Category, null=True, blank=True)
modifier_group = models.ManyToManyField(ModifierGroup, null=True, blank=True)
def __str__(self):
return self.name
Виды
@login_required(login_url='/login/')
def productList(request):
products = Product.objects.all()
context = {'products':products}
template = 'product/product/products.html'
return render(request,template,context)
Шаблон
<td class="text-end pe-0" data-order="37">
<span class="fw-bold ms-3">{{product.category.name}}</span>
</td>
Результат шаблона Вывод здесь
Как я могу запросить и отобразить категорию для данного товара на странице списка товаров?