Django 中的枚举类型
Enumeration types in Django
我正在尝试在 Django 中使用枚举类型,但感觉我没有做正确的事...
我正在构建一个类似 ebay 的网络应用程序,其中我的列表使用 .category
属性保存在数据库中。
class Listing(models.Model):
class Category(models.TextChoices):
TOY = "TO", _("Toys")
FASHION = "FA", _("Fashion")
ELECTRONICS = "EL", _("Electronics")
HOME = "HO", _("Home")
OTHERS = "OT", _("Others")
title = models.CharField(max_length=64)
category = models.CharField(
max_length=2,
choices=Category.choices,
default=Category.OTHERS,
)
关于 枚举类型 的使用,我参考了 Django's documentation,但据我所知,存在一些灰色区域。
当我呈现模板以显示 Listing
时,如何传递与 Listing
的 .category
关联的字符串值?
我试过这样的事情:
return render(request, "auctions/listing.html", {
"listing": listing,
"category": Listing.Category[listing.category].label,
})
或者我可以通过 "listing"
变量访问它吗?我想要的是浏览器显示 Home
对于 listing
和 listing.category = "HO"
.
每当您使用具有选择的字段时,Django 都会为您提供一个方法供您使用 get_<field_name>_display
,您可以在您的模板中使用它,例如:
{{ listing.get_category_display }}
我正在尝试在 Django 中使用枚举类型,但感觉我没有做正确的事...
我正在构建一个类似 ebay 的网络应用程序,其中我的列表使用 .category
属性保存在数据库中。
class Listing(models.Model):
class Category(models.TextChoices):
TOY = "TO", _("Toys")
FASHION = "FA", _("Fashion")
ELECTRONICS = "EL", _("Electronics")
HOME = "HO", _("Home")
OTHERS = "OT", _("Others")
title = models.CharField(max_length=64)
category = models.CharField(
max_length=2,
choices=Category.choices,
default=Category.OTHERS,
)
关于 枚举类型 的使用,我参考了 Django's documentation,但据我所知,存在一些灰色区域。
当我呈现模板以显示 Listing
时,如何传递与 Listing
的 .category
关联的字符串值?
我试过这样的事情:
return render(request, "auctions/listing.html", {
"listing": listing,
"category": Listing.Category[listing.category].label,
})
或者我可以通过 "listing"
变量访问它吗?我想要的是浏览器显示 Home
对于 listing
和 listing.category = "HO"
.
每当您使用具有选择的字段时,Django 都会为您提供一个方法供您使用 get_<field_name>_display
,您可以在您的模板中使用它,例如:
{{ listing.get_category_display }}