Django小数点分隔符

时间:2020-01-27 10:32:23

标签: django

不幸的是,我似乎无法使Decimal Separator Option生效:

这是项目settings.py的相关部分:

# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Europe/Berlin'  # Correction for the Timestamps
USE_I18N = True
USE_L10N = False
DECIMAL_SEPARATOR = '.'
USE_TZ = False

L10N显式设置为False,因此Django应该忽略任何浏览器设置,如果我理解正确的文档,则始终使用标准的十进制分隔符?

不幸的是,不是这种情况,我的小数字段仍然需要逗号作为用户输入的分隔符,知道吗?

(我还尝试过以 init 的形式直接将本地化设置为False,但无效)

下面是我的表单和模型定义(所涉及的字段为“费率”)

Model.py:

class Rates(models.Model):
    BillingPartner = models.CharField(max_length=255, blank=False, null=False, verbose_name='Channel Partner')
    # BillingPartner = models.ManyToManyField(to=DistinctCPView, db_constraint=False, verbose_name='Channel Partner')
    SubBillingPartner = models.CharField(max_length=255, blank=False, null=False, verbose_name='Service Partner')
    Product = models.CharField(max_length=255, blank=False, null=False)
    EventType = models.CharField(max_length=255, blank=False, null=False)
    Rate = models.DecimalField(decimal_places=8, max_digits=30)
    RateUnit = models.CharField(max_length=50, blank=False, null=False, choices=rate_unit_choice)
    BillingModel = models.CharField(max_length=255, blank=False, null=False)
    Currency = models.CharField(max_length=30, blank=False, null=False, choices=currency_choice, default='EUR')
    StartDate = models.DateField(blank=False, null=False)
    EndDate = models.DateField(blank=True, null=True)
    UserCreate = models.CharField(max_length=255, blank=False, null=False)
    UserCreateDate = models.DateField(blank=False, null=False)
    UserModify = models.CharField(max_length=255, blank=False, null=False)
    UserModifyDate = models.DateField(blank=False, null=False)
    # Zone = models.CharField(max_length=255, blank=True, null=True)
    InvoiceDirection = models.CharField(max_length=20, blank=False, null=False, choices=invoice_direction_choice)

    def __str__(self):
        representation = "BillingPartner: " + self.BillingPartner + " SubBillingPartner: " + \
                         self.SubBillingPartner + " EventType: " + \
                         self.EventType + " Event Type: " + self.EventType + " Start Date: " \
                         + str(self.StartDate) + " End Date: " + str(self.EndDate)
        return representation

    def get_absolute_url(self):
        return reverse('rate_edit', kwargs={'pk': self.pk})

Forms.py :(省略了清理函数+添加了表单字段)

class RatesModelForm(forms.ModelForm):
  def __init__(self, *args, **kwargs):
        super(RatesModelForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper(self)
        self.fields['StartDate'].widget.attrs['class'] = 'datepicker'
        self.fields['EndDate'].widget.attrs['class'] = 'datepicker'
        self.helper.add_input(Submit('submit', 'Submit', css_class='btn-primary'))
        self.helper.form_method = 'POST'
        # self.fields['Rate'].localize = False
    class Meta:
        model = Rates
        fields = ['BillingPartnerDD', 'SubBillingPartnerDD', 'ProductDD', 'EventTypeDD', 'Rate', 'RateUnit',
                  'Currency', 'BillingModel', 'InvoiceDirection', 'StartDate', 'EndDate']
        widgets = {
            'StartDate': forms.DateTimeInput(attrs={'class': 'datetime-input'}),
            'EndDate': forms.DateTimeInput(attrs={'class': 'datetime-input'}),
        }

0 个答案:

没有答案