【发布时间】:2020-03-24 04:25:18
【问题描述】:
我正在使用 Django 创建一个电子商务网站,在产品页面上我有一个带有类别选择的侧边栏。我会根据产品模型中给出的类别选择来动态显示类别选择。
这是HTML的图片(请不要判断内容或商店类型;-):
这是玩具产品的模型:
class ToyProduct(models.Model):
slug = models.SlugField(max_length=40)
image = models.ImageField(upload_to='media')
title = models.CharField(max_length=150)
description = models.TextField()
price = models.DecimalField(max_digits=5, decimal_places=2)
stock_quantity = models.PositiveIntegerField()
in_stock = models.BooleanField(default=True)
category = models.CharField(choices=TOY_CATEGORY_CHOICES,
max_length=2, default='FW')
brand = models.CharField(choices=TOY_BRAND_CHOICES, max_length=2,
default='NB')
on_sale = models.BooleanField(default=False)
def __str__(self):
return self.title
以下是在 models.py 文件的元组中定义的类别选择:
TOY_CATEGORY_CHOICES = (
('FW', 'For Women'),
('FM', 'For Men'),
('DD', 'Dildo'),
('VB', 'Vibrator'),
('LX', 'Luxury'),
('KT', 'Kit'),
('BP', 'Butt Plug'),
('PM', 'Prostate Massager'),
('AB', 'Anal Bead')
)
这是views.py中的视图
def products_sextoys_view(request):
context = {
'header': 'Sex Toys',
'toy': ToyProduct.objects.all()
}
return render(request, 'products/sextoys.html', context)
这是目前为止的 HTML 文件:
<section id="products-framework">
<div class="container mt-5 mb-5">
<div class="row">
<div class="col-2" id="category-column">
<h1 class="text-center">Category Choices</h1>
<h4><strong>Category</strong></h4>
<a href="#"><h3></h3></a>
<hr class="newhr">
<h4><strong>Brands</strong></h4>
<a href="#"><h3></h3></a>
<hr class="newhr">
</div>
如您所见,我尝试了一个 for 循环,但这并没有输出任何内容。我尝试了几件事,以及输入 for 循环和引用 ToyProducts 类中的选择对象的各种方法,但似乎没有任何效果。模型中有数百个带有侧边栏和各种选择的页面,因此对每个页面都进行硬编码不是我想做的。我希望能够遍历 catrgory 选项并将它们显示为左侧的列表
非常感谢!
【问题讨论】:
-
请始终尝试使用格式化代码而不是屏幕截图。如果人们可以复制和修改代码,而不是从头开始编写,那么他们会更容易提供帮助。
标签: django django-models django-templates django-views django-2.0