我有兩個(gè)模型 - “產(chǎn)品”和“類別”,每個(gè)產(chǎn)品都可以添加到現(xiàn)有類別中。我正在嘗試找到一種方法來(lái)呈現(xiàn)包含按類別過(guò)濾的產(chǎn)品的頁(yè)面。目前,我通過(guò)在模板中手動(dòng)過(guò)濾每個(gè)類別來(lái)完成此操作:{% for instance in object_list %} {% if instance.category.categoryname == "Statues" %} {{ instance.name }} {{ instance.description }} {{ instance.price }} {% endif %}{% endfor %}我對(duì)每個(gè)類別(“繪畫”、“珠寶”等)都有相同的模板,并更改了每個(gè)模板中的條件。URL“../Statues”指向預(yù)先存在的模板有什么辦法可以更輕松地做到這一點(diǎn)嗎?我希望 從 URL 導(dǎo)入條件{% if instance.category.categoryname == "Statues" %} 。因此,當(dāng)您訪問(wèn)“../Jewelry”時(shí),模板將從 URL 導(dǎo)入“Jewelry”并相應(yīng)地過(guò)濾內(nèi)容。models.pyclass Category(models.Model): categoryname = models.CharField(max_length=20) description = models.CharField(max_length=200, blank=True, null=True) #To make in name, not objXXX def __str__(self): return self.categorynameclass Product(models.Model): name = models.CharField(max_length=20) image = models.ImageField(upload_to='static/photos', default='http://placehold.it/700x400') description = models.TextField(max_length=200, blank=True, null=True) price = models.DecimalField(decimal_places=2, max_digits=10) category = models.ForeignKey(Category, on_delete=models.PROTECT, blank=True, null=True) #To make in name, not objXXX def __str__(self): return self.nameurls.pyurlpatterns = [ path('admin/', admin.site.urls), path('<str:categoryname>', category_filter)]view.pydef category_filter(request, categoryname): queryset = Product.objects.all() context = {"object_list": queryset} return render(request, "category_filter.html", context)類別選擇模板:{% for instance in category_list %}<a href="{{ instance.categoryname }}" class="list-group-item">{{ instance.categoryname }}</a>{% endfor %}
1 回答

楊__羊羊
TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
這可能太簡(jiǎn)單了......您可以在視圖中應(yīng)用過(guò)濾器并基于此發(fā)送查詢集:
def category_filter(request, categoryname):
category=Category.objects.get(categoryname=categoryname)
queryset = Product.objects.filter(category=category)
context = {"product_list": queryset}
return render(request, "category_filter.html", context)
添加回答
舉報(bào)
0/150
提交
取消