不幸的是,我似乎无法使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'}),
}