我有問題。我不知道如何在 Django 模板中的 for 回圈中參考產品類別。我已將一個隨機類別添加到產品(在資料庫中),但無論我選擇哪個類別,網站上 {{product.product_category.name}} 的輸出都是“無”:
def all_products(request):
product = Product.objects.all().order_by('-created_at').a
paginator = Paginator(product, 25)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
context = {
'page_obj': page_obj,
}
return render(request, 'ecommerce/all_products.html', context)
那么我在 Django 模板上的 for 回圈看起來像這樣
{% for product in page_obj %}
<div class="col-xl-4">
<a class="card border border-light hover-shadow-9 px-4 py-2" href="{% url 'ecommerce:product_detail_view' product.slug %}">
<p class="mb-0 small-3 text-light">{{ product.product_producer }}</p>
<p class="mb-0">{{ product.name }}</p>
<p class="mb-0">{{ product.product_category.name }}</p>
</a>
</div>
{% endfor %}
模型產品看起來像這樣
class Product(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique=True, null=False, editable=False)
created_at = models.DateTimeField(editable=False, default=timezone.now)
updated_at = models.DateTimeField(default=timezone.now)
product_category = models.ManyToManyField(EcommerceProductCategory)
description = RichTextField(max_length=2000, null=True, blank=True)
product_producer = models.ForeignKey('ProductProducer', on_delete=models.CASCADE)
creator = models.ForeignKey('users.CustomUser', on_delete=models.CASCADE, null=True, blank=True, related_name='product_creator')
points_from_reviews = models.DecimalField(max_digits=6, decimal_places=2, default=0, help_text='?rednia ocena produktu')
unique_id = models.CharField(max_length=256, unique=True)
type_of_unique_id = models.CharField(max_length=64)
product_img = models.FileField(upload_to='ecommerce_product_img/', null=True, blank=True)
并且類別與 EcommerceProductCategory 相關聯
class EcommerceProductCategory(MPTTModel):
name = models.CharField(max_length=64, null=True, unique=False)
slug = models.SlugField(max_length=40, unique=False, null=False, editable=False)
created_at = models.DateTimeField(editable=False, default=timezone.now)
updated_at = models.DateTimeField(default=timezone.now)
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
你有什么想法嗎?
uj5u.com熱心網友回復:
您product_category = models.ManyToManyField(EcommerceProductCategory)是一個M2M欄位,它包含查詢集,您必須對其進行迭代以獲取屬于當前產品的所有名稱,如下所示
{% for product in page_obj %}
<div class="col-xl-4">
<a class="card border border-light hover-shadow-9 px-4 py-2" href="{% url 'ecommerce:product_detail_view' product.slug %}">
<p class="mb-0 small-3 text-light">{{ product.product_producer }}</p>
<p class="mb-0">{{ product.name }}</p>
<!---Changed---->
{% for category in product.product_category.all %}
<p class="mb-0">{{ category.name }}</p>
{% endfor %}
</a>
</div>
{% endfor %}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/396960.html
標籤:Python 姜戈 django 模型 django-views
