J'ai donc cette erreur APRÈS que ma base de données soit remplie, mais lors de la création d'un NOUVEAU. Si je n'exécute pas mon importateur csv, j'ai écrit (cela prend juste les fichiers CSV d'une ancienne base de données, importe les modèles, crée de nouvelles instances de modèles, les remplit avec les données et les enregistre) puis ajoute un nouveau groupe (une entité dans mon application) fonctionne très bien. La forme revient vide et prêt à aller, si je lance l'importateur, puis les pauses modifier et ajouter à cette erreur:Formes cryptées erreur django: coercition en Unicode: besoin de chaîne ou de tampon, datetime.date trouvé
Je ne sais pas ce qui cause cela. L'importateur est assez simple. Peut-être que j'ai une parse_date de la fonction csv que j'ai mal écrit?
Usage
provider.date_of_birth = parseDateTime(row[4])#parseDateTime(row[4]).strftime('%Y-%m-%d')
def parseDateTime(dt):
try:
col_date_object = datetime.strptime(dt, '%m/%d/%Y')
except ValueError:
col_date_object = datetime.now()
return col_date_object
Je revérifié l'importation et naviguerez sur les tables DB pour vous assurer que je n'étais pas hors d'une ligne ou une colonne ou quelque chose. En effet, les choses semblent bonnes
Le modèle en question est la suivante:
@python_2_unicode_compatible
class Group(models.Model):
group_term = models.ForeignKey('GroupTerm', on_delete=models.SET_NULL, null=True, blank=True) #quesiton is can a group be termed many times?
group_name = models.CharField(max_length=50)
group_contact = models.CharField(max_length=50)
tin = models.CharField(max_length=50)
npi = models.CharField(max_length=50)
notes = models.TextField(max_length=255, null=True, blank=True)
start_date = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True)
end_date = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True)
change_date = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True)
change_text = models.TextField(max_length=255, null=True, blank=True)
term_comment = models.TextField(max_length=255, null=True, blank=True)
group_phone = models.CharField(max_length=50)
group_fax = models.CharField(max_length=50)
billing_address_line_one = models.CharField(max_length=50)
billing_address_line_two = models.CharField(max_length=50, null=True, blank=True)
billing_city = models.CharField(max_length=50)
billing_state = models.CharField(max_length=50)
billing_zip_code = models.CharField(max_length=50)
mailing_address_line_one = models.CharField(max_length=50)
mailing_address_line_two = models.CharField(max_length=50, null=True, blank=True)
mailing_city = models.CharField(max_length=50)
mailing_state = models.CharField(max_length=50)
mailing_zip_code = models.CharField(max_length=50)
default_location = models.BooleanField(default=True)
created_at = models.DateField(auto_now_add=True)
updated_at = models.DateField(auto_now=True)
class Meta:
ordering = ['-created_at']
def __str__(self):
return self.group_name
se plaint que str n'a pas d'attribut strftime. Je devine parce que dt qui est passé est juste une chaîne de caractères du fichier csvfile? Je pense que je construisais à l'origine un objet date-heure hors de la chaîne puis le formater pour mon db. – Codejoy
@Codejoy, Jetez un oeil si cela vous est utile. –
Eh bien, peut-être que je pourrais reformater cette colonne avec un remplacement de piqûre. Toujours pas sûr que tout cela va résoudre le problème à portée de main – Codejoy