【问题标题】:How can I set default_currency= "INR" in settings.py file because its use many times in project?我如何在 settings.py 文件中设置 default_currency= "INR" 因为它在项目中多次使用?
【发布时间】:2021-10-20 09:21:19
【问题描述】:

我想将 MoneyField 详细信息保存在 setting.py 文件中,这样我就可以在每个使用 MoneyField 的地方使用它我想保存它..

MoneyField(max_digits=10, decimal_places=2, default_currency='INR', null=False, default=0.0)

如何保存在settings.py中

【问题讨论】:

    标签: django model settings currency money-format


    【解决方案1】:

    Django 使用名为DEFAULT_CURRENCY 的设置来设置货币,默认为'XYZ'。事实上,如果我们查看source code [GitHub],我们会看到:

    from ..settings import CURRENCY_CHOICES, DECIMAL_PLACES, DEFAULT_CURRENCY
    
    # …
    
    class MoneyField(models.DecimalField):
        # …
    
        def __init__(
            self,
            # ...,
            default_currency=DEFAULT_CURRENCY,
            # …
        ):
            # …
        
        # …

    因此,您可以将settings.py 中的DEFAULT_CURRENCY 设置为:

    # settings.py
    
    # …
    
    DEFAULT_CURRENCY = 'INR'
    
    # …

    并且在创建MoneyFields 时省略default_currency='INR' 参数。

    【讨论】:

      【解决方案2】:

      您可能可以使用functools.partial 来执行此操作。

      from functools import partial
      
      from django.db import models
      
      MyMoneyField = partial(
          models.DecimalField,
          default='INR',
          ...
      )
      

      现在您可以在表单中使用它:

      class MyModel(models.Model):
          amount = MyMoneyField()
      

      如果您希望通过您的settings 进行配置,只需在您的settings.py 中将DEFAULT_CURRENCY 设置为INR,然后以下列形式使用它:

      from django.conf import settings
      
      MyMoneyField = partial(
          models.DecimalField,
          default=settings.DEFAULT_CURRENCY,
          ...
      )
      

      partial 还允许使用替换之前填充的参数。例如:

      class AnotherModel(models.Model):
          new_amount = MyMoneyField(current='USD')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-08
        • 2018-10-26
        • 2019-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-16
        相关资源
        最近更新 更多