Django eccomerce prodcut имя не отображается в файле

я создаю новый сайт django eccomorce теперь на странице детализации продукта вот мой код

проблема в том, что я не могу увидеть правильное название товара на html странице проблема с first() когда я использую first, то отображается только название продукта, но все продукты имеют одинаковые названия, у меня на странице 8 продуктов, восемь названий продуктов совпадают с первым, просто как перезапись, также я не могу использовать цикл for с first()

я добавлю несколько фотографий

enter image description here

urls.py

 path('collection/<str:cate_slug>/<str:prod_slug>',views.product_view,name="productview"),

views.py

def product_view(request,cate_slug,prod_slug):
    if (Category.objects.filter(slug=cate_slug, status=0)):
        if (Products.objects.filter(slug=prod_slug, status=0)):
            products = Products.objects.filter(slug=prod_slug, status=0).first()
            context = {'products':products}
        else:
            messages.error(request,"no such product found")
            return redirect("collection")
    else:
        messages.error(request,"no such category found")
        return redirect("collection")
    
    return render(request,"product_view.html",context)

models.py

class Products(models.Model):
    category = models.ForeignKey(Category,on_delete=models.CASCADE)
    slug = models.CharField(max_length=150, null=False, blank=False)
    product_name = models.CharField(max_length=150, null=False, blank=False)
    product_image = models.ImageField( upload_to=get_image,null=True,blank=True)
    description = models.TextField(max_length=500,null=False,blank=False)
    original_price = models.IntegerField(null=False,blank=False)
    selling_price = models.IntegerField(null=False,blank=False)
    status = models.BooleanField(default=False,help_text="0=default , 1=Hidden")
    trending = models.BooleanField(default=False,help_text="0=default , 1=Trending")
    meta_title = models.CharField(max_length=150,null=False,blank=False)
    meta_keyword = models.CharField(max_length=150,null=False,blank=False)
    meta_description = models.CharField(max_length=400,null=False,blank=False)
    created_at = models.DateTimeField(auto_now_add=True)
    
    def __str__(self):
        return self.product_name
    

productview.html

{% block content %}

 <h1>{{ products.product_name }} </h1>
 



{% endblock %}

я просто хочу правильное название продукта для каждой категории я застрял здесь утром помощь приветствуется спасибо всем за помощь до сих пор

Я думаю, что вам нужно пройтись циклом по вашим продуктам:

{% for product in products %}
  <h1>{{ product.product_name }}</h1>
{% endfor %}
Вот что я придумал, что позволяет определить доступ на основе каждого поля.

Обратите внимание, что обычно имя модели имеет единственное число, поэтому оно должно быть class Products(models.Model):

Вернуться на верх