在 Django 商店中本地化价格的正确方法是什么?
What the right way to localize the price in the Django-shop?
我知道简单的方法,为所需的货币创建几个不同的字段,但这不仅难看,而且货币将被硬编码。在我看来通过django-parler更优雅,但我不太明白该怎么做。
我认为这是正确的方法:
class CurrencyModel(TranslatableModel):
translations = TranslatedFields(
title = models.CharField(_("Title"), max_length=120),
)
code = models.CharField(_('ISO 4217 code'), max_lenght=3)
def __str__(self):
return self.title
class ItemModel(BaseProduct, TranslatableModel):
slug = models.SlugField(_("Slug"), unique=True)
translations = TranslatedFields(
product_name = models.CharField(_("Item Name"), max_length=256),
item_price = models.FloatField(_("Item price")),
currency = models.ForeignKey(CurrencyModel, verbose_name=_("Currency ")),
)
def get_price(self, request):
money = MoneyMaker(self.currency.code)
return money(self.item_price)
在 django-SHOP 中本地化价格的最简单方法是使用 MoneyInXXX
class。 class 可以使用 MoneyMaker
工厂为每种货币生成。
只要格式化金额 class,它就会正确本地化。
我知道简单的方法,为所需的货币创建几个不同的字段,但这不仅难看,而且货币将被硬编码。在我看来通过django-parler更优雅,但我不太明白该怎么做。
我认为这是正确的方法:
class CurrencyModel(TranslatableModel):
translations = TranslatedFields(
title = models.CharField(_("Title"), max_length=120),
)
code = models.CharField(_('ISO 4217 code'), max_lenght=3)
def __str__(self):
return self.title
class ItemModel(BaseProduct, TranslatableModel):
slug = models.SlugField(_("Slug"), unique=True)
translations = TranslatedFields(
product_name = models.CharField(_("Item Name"), max_length=256),
item_price = models.FloatField(_("Item price")),
currency = models.ForeignKey(CurrencyModel, verbose_name=_("Currency ")),
)
def get_price(self, request):
money = MoneyMaker(self.currency.code)
return money(self.item_price)
在 django-SHOP 中本地化价格的最简单方法是使用 MoneyInXXX
class。 class 可以使用 MoneyMaker
工厂为每种货币生成。
只要格式化金额 class,它就会正确本地化。