К сожалению, я не могу заставить параметр десятичного разделителя вступить в силу:
Это соответствующая часть настроек проекта. 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 должен игнорировать любые настройки браузера и всегда использовать стандартный десятичный разделитель, если я правильно понял документы?
К сожалению, это не тот случай, мои десятичные поля все еще требуют запятую в качестве разделителя для пользовательских вводов, любая идея?
(я также пытался установить в False локализацию в форма в init , но безрезультатно)
Ниже приведены мои определения формы и модели (рассматриваемое поле будет "Rate")
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'}),
}