在Django商店本地化价格的正确方法是什么?

时间:2017-06-01 17:00:37

标签: python django django-parler django-shop

我知道简单的方法,为所需的货币制作一些不同的字段,但这不仅是丑陋的,而且货币将被硬编码。在我看来,通过django-parler我会更优雅,但我不太明白该怎么做。

2 个答案:

答案 0 :(得分:0)

我认为这是正确的方法:

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)

答案 1 :(得分:0)

在django-SHOP中本地化价格的最简单方法是使用MoneyInXXX类。可以使用MoneyMaker工厂为每种货币生成此类。

每当格式化Money类的数量时,它都会正确本地化。