python - 在 Django 选项中使用更具描述性的名称
问题描述
我正在创建一个电子商务应用程序,但遇到了一个问题,我似乎无法让 Django 显示元组中的第二项。比如我的models.py...
class ProductItem(models.Model):
OPTIONS = [
("RED","Red"),
("DBL","Dark Blue"),
("LBL","Light Blue"),
("DGR","Dark Green"),
("LGR","Light Green"),
("PNK","Pink"),
("GRY","Gray"),
("BLK","Black"),
("BRO","Brown"),
("WHT","White"),
("MAR","Marroon"),
("ORG","Orange"),
("BEG","Beige"),
("GLD","Gold"),
("SLV","Silver"),
("MLT", "MultiColour")
]
product = models.ForeignKey(Product, on_delete=models.CASCADE)
colour = models.CharField(choices=OPTIONS, default="BLK", max_length=20)
quantity_available = models.PositiveIntegerField()
def __str__(self):
return f"{self.product} -> ({self.colour})"
在我看来.py ...
def product_detail(request, id):
products = Product.objects.filter(id=id).first()
context={
"product": products,
"options": ProductItem.objects.filter(product=products)
}
return render(request, "store/product_detail.html", context)
最后在我的模板中......
<select id="style">
{% for option in options %}
<option value="{{option.colour}}">{{option.colour]}}</option>
{% endfor %}
</select>
在这种情况下,我们假设应该出现深蓝色。我希望该值与DBL
我在 CHOICES 中提到的一样,并希望Dark Blue
为用户显示。但在这种情况下,只DBL
显示了我不想要的东西。关于如何解决这个问题的任何想法?
谢谢!
解决方案
您可以使用方法 [Django-doc]。所以对于该领域,即:get_fieldname_display()
colour
get_colour_display()
<select id="style">
{% for option in options %}
<option value="{{ option.colour }}">{{ option.get_colour_display }}</option>
{% endfor %}
</select>
推荐阅读
- php - 在后台模式下运行 bash 脚本时的编码问题
- json - 通过 Snowflake 中的目标表替代 JSON 展平
- c# - Access 数据库应用程序可以跨桌面共享吗?
- javascript - 使用 ElementRef 查询列表在悬停时显示 div
- xml - 由两种模式验证的 XML 文件
- android - 在Android中找不到资产的路径
- r - R Studio - 包 googlesheets 不再起作用
- jekyll - 有没有一种简单的方法可以让 Jekyll 输出文件到 docs/ 目录?
- android - 如何正确监听 FirebaseDatabase 中的子更改
- php - 在 Laravel 6.5 中手动添加旧的东西