Python Django:使用已操纵的.csv文件保存数据库|错误:“”;值的日期格式无效

Python Django:使用已操纵的.csv文件保存数据库|错误:“”;值的日期格式无效,python,django,django-models,Python,Django,Django Models,我有一个csv文件,它由另一个平台定期更新。我正在尝试将此csv文件导入我的数据库。但csv文件样式(如日期字段、空白字段或选择字段)与django不匹配。所以我需要处理这个文件,然后我要导入到我的数据库中 即使我在我的脚本中编辑了这个csv文件,并且看起来很像csv文件,但是我还是遇到了以下错误 错误 django.core.exceptions.ValidationError: ['“” value has an invalid date format. It must be in YYYY

我有一个csv文件,它由另一个平台定期更新。我正在尝试将此csv文件导入我的数据库。但csv文件样式(如日期字段、空白字段或选择字段)与django不匹配。所以我需要处理这个文件,然后我要导入到我的数据库中

即使我在我的脚本中编辑了这个csv文件,并且看起来很像csv文件,但是我还是遇到了以下错误

错误

django.core.exceptions.ValidationError: ['“” value has an invalid date format. It must be in YYYY-MM-DD format.']
还有一个错误

django.core.exceptions.ValidationError: ['“” value has an invalid date format. It must be in YYYY-MM-DD format.']
我的车型

class Personnel(models.Model):
    personnnelNumber = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=50, null=True, blank=True)
    dateEmployment = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True)
    dateTermination = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True)
    cardCode = models.IntegerField(null=True, blank=True)
    SapCode = models.IntegerField(null=True, blank=True)
    country = models.CharField(max_length=50, null=True, blank=True)
    idNo = models.IntegerField(null=True, blank=True)
    gender = models.CharField(max_length=50, null=True, blank=True)
    birthdate = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True)
    socialNumber = models.IntegerField(null=True, blank=True)
    dateEmploymentRD = models.DateField( auto_now=False, auto_now_add=False, null=True, blank=True)
    dateTerminationRD = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True)
    task = models.CharField( max_length=50, null=True, blank=True)
    workTime = models.IntegerField(choices=((1,'Full Time'),(2,'Part Time')), null=True, blank=True)
    graduateLevel = models.CharField( max_length=50, null=True, blank=True)
    highSchoolname = models.CharField( max_length=50, null=True, blank=True)
    highSchoolfield = models.CharField( max_length=50, null=True, blank=True)
    associateSchoolname = models.CharField( max_length=50, null=True, blank=True)
    associateSchoolfield = models.CharField( max_length=50, null=True, blank=True)
    universityName = models.CharField( max_length=50, null=True, blank=True)
    universityField = models.CharField( max_length=50, null=True, blank=True)
    masterName = models.CharField( max_length=50, null=True, blank=True)
    masterField = models.CharField( max_length=50, null=True, blank=True)
    doctorateName = models.CharField( max_length=50, null=True, blank=True)
    doctorateField = models.CharField( max_length=50, null=True, blank=True)
    department = models.CharField( max_length=50, null=True, blank=True) #Eklenmedi
    pypRate = models.DecimalField( max_digits=3, decimal_places=2, null=True, blank=True) 
       title = models.CharField( max_length=50, blank=True, null=True)
    phonenumber = PhoneNumberField(blank=True, null=True)
    userImage = models.ImageField( upload_to=None, height_field=None, width_field=None, max_length=None, null=True, blank=True)

    def __str__(self):
        return self.name
    

    class Meta:
        db_table = "Personnel"
        ordering = ['name']
他们的RCSV文件

"12648";"ABC XYZ";03/01/12;?;"12648";"12648";"UK";"24350214764";"";?;"";yes;?;?;"RESEARCH";"1";"";yes;no;"";"";"";"";"";"";"";"";"";"";"";1
12648;ABC XYZ;2012-01-03;;12648;12648;UK;24350214764;;;;1;;;RESEARCH;1;;1;2;;;;;;;;;;;;1;
MyCSV文件

"12648";"ABC XYZ";03/01/12;?;"12648";"12648";"UK";"24350214764";"";?;"";yes;?;?;"RESEARCH";"1";"";yes;no;"";"";"";"";"";"";"";"";"";"";"";1
12648;ABC XYZ;2012-01-03;;12648;12648;UK;24350214764;;;;1;;;RESEARCH;1;;1;2;;;;;;;;;;;;1;
我的脚本

def run():
    with open(r"TheirCSV.csv", encoding="utf8") as f:
        reader = csv.reader(f, delimiter=';', quotechar='"')
        nf = open("MyCSV.csv", "w", encoding="utf8")
        x =[]
        for row in reader:
            for i in range(len(row)):
                if row[i] == "?":
                    row[i] = ";"
                    x.append(row[i])
                elif row[i] == 'yes':
                    row[i] = "1;"
                    x.append(row[i])
                elif row[i] == 'no':
                    row[i] = "2;"
                    x.append(row[i])
                elif "/" in row[i]:
                    editedDate = datetime.datetime.strptime(row[i],"%d/%m/%y").strftime("%Y-%m-%d")
                    row[i] = editedDate
                    x.append(row[i])
                    x.append(";")
                else:
                    x.append(row[i])
                    x.append(";")
            x.append("\n")
        nf.writelines(x)
        nf.close()
    f.close()

    with open(r"MyCSV.csv", encoding="utf8") as f:
        reader = csv.reader(f, delimiter=';', quotechar='"')
        Personnel.objects.all().delete()

        for row in reader:
            print(row)
            c = Personnel(personnnelNumber=row[0], name=row[1], dateEmployment=row[2], dateTermination=row[3], cardCode=row[4], SapCode=row[5], country=row[6], idNo=row[7], gender=row[8], birthdate=row[9], socialNumber=row[10], dateEmploymentRD=row[11], dateTerminationRD=row[12], task=row[13], workTime=row[14], graduateLevel=row[15], highSchoolname=row[16], highSchoolfield=row[17], associateSchoolname=row[18], associateSchoolfield=row[19], universityName=row[20], universityField=row[21], masterName=row[22], masterField=row[23], doctorateName=row[24], doctorateField=row[25], department=row[26], pypRate=row[27])
            c.save()
我错过了什么?为什么准备好的csv文件看起来不错,Django试图更正字段类型?你能给我指路吗