Monday, March 23, 2020

Django: date format management and unique_together -> “20/03/2020” value has an invalid date format. It must be in YYYY-MM-DD format.”]

Hi,

I develop a Django project with internationalization English/French

dates have to be displayed with the dd/mm/yyyy format when user webbrowser is FR and yyyy-mm-dd when user webbrowser is EN

to do that, I use JS that test webbrowser user favorite language and display format accordingly

That works fine until I change my model to add unique_together constraint with this date

 

Now, I got the error when webbrowser is in french and I try to register date (asp_ent_dat)


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



Reading Django documentation about validation, I 'understand' that unique_together is the model validation that seems to fail because of date format


I try adding DATE_INPUT_FORMATS = ['%Y-%m-%d', '%d-%m-%Y', ] in settings.py, the second format corresponding to the french format I need, but it does'nt works


I can I fix my problem:

Have unique_together constraint on 3 fields including asp_ent_dat and display date in french format in my form?


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',              }          );  });

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/393c0328-3148-466b-b9e4-eb6111fdaff6%40googlegroups.com.

No comments:

Post a Comment