【问题标题】:What the right way to localize the price in the Django-shop?在 Django 商店中本地化价格的正确方法是什么?
【发布时间】:2017-11-02 22:36:17
【问题描述】:

我知道简单的方法,为所需货币创建几个不同的字段,但这不仅难看,而且货币将被硬编码。在我看来,通过 django-parler 更优雅,但我不太明白该怎么做。

【问题讨论】:

  • 据我所知,惯例是始终以您将接受的货币显示,并以当地价格显示估计值。例如,如果我从美国访问 amazon.ca,它会显示 CAD,旁边是近似美元。我会用模板标签来做到这一点。您可以轻松地从 fixer 等网站获取转化。

标签: python django django-parler django-shop


【解决方案1】:

我认为这是正确的方法:

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)

【讨论】:

    【解决方案2】:

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

    只要对 Money 类的数量进行格式化,它就会正确本地化。

    【讨论】:

      猜你喜欢
      • 2017-04-13
      • 1970-01-01
      • 2022-12-03
      • 2014-05-22
      • 2016-03-11
      • 2011-02-22
      • 1970-01-01
      • 2013-10-26
      • 2012-02-02
      相关资源
      最近更新 更多