Django: управление форматом даты и уникальное значение -> «20/03/2020» имеет недопустимый формат даты. Он должен быть в формате ГГГГ-ММ-ДД ».] - PullRequest
0 голосов
/ 23 марта 2020

Я разрабатываю проект Django с интернационализацией. Английский / французский

даты должны отображаться в формате дд / мм / гггг, когда пользовательский веб-браузер имеет FR, и гггг-мм-дд, если пользователь веб-браузер является EN

, чтобы сделать это, я использую JS, который тестирует любимый язык пользователя веб-браузера и формат отображения соответственно

Это работает, пока я не изменю свою модель, добавив ограничение unique_together с эта дата

Теперь я получил ошибку, когда веб-браузер на французском, и я пытаюсь зарегистрировать дату ( asp_ent_dat )

 'date format "20/03/2020" is invalid. Correct format is "yyy-mm-dd".

models.py:

class Entree(models.Model):

    asp_ent_cle = models.AutoField(primary_key=True)
    asp_ent_loc = models.CharField("Site concerned by the operation", max_length=10, null=True, blank=True)
    med_num = models.CharField("Trial batch number", max_length=3, null=True, blank=True,)
    asp_ent_dat = models.DateField("Entry date", null=True, blank=True)
    asp_ent_pro_pay = models.CharField("Country of treatment origin in case of entry", max_length=10, null=True, blank=True)
    asp_ent_pro_sit = models.CharField("Processing source site in case of entry", max_length=10, null=True, blank=True)
    opr_nom = models.CharField("Input operator", max_length=10, null=True, blank=True)
    opr_dat = models.DateField("Entry date", null=True, blank=True)
    log = HistoricalRecords()

    class Meta:

        db_table = 'pha_asp_ent'
        verbose_name_plural = 'Entries'
        ordering = ['asp_ent_cle']
        unique_together = ['asp_ent_loc','med_num','asp_ent_dat']   

JS:

$(function(){

    if(window.navigator.language == 'fr-FR' | window.navigator.language == 'fr'){
        $("#id_asp_ent_dat").datepicker(
            {
                dateFormat: 'dd/mm/yy',
            }
        );
    } 
    else
    {
        $("#id_asp_ent_dat").datepicker(
            {
                dateFormat: 'yy-mm-dd',
            }
        );
});

forms.py:

    def clean(self):
        cleaned_data = super(EditForm, self).clean()
        cle1 = self.data.get('asp_ent_loc')
        cle2 = self.data.get('med_num')
        # cle3 = self.data.get('asp_ent_dat')    ***LINE THAT RAISE ERROR***
        cle3 = self.cleaned_data['asp_ent_dat']

1 Ответ

2 голосов
/ 23 марта 2020

Добавить действительные форматы даты в DATE_INPUT_FORMATS.

DATE_INPUT_FORMATS

...