如何修复"django.core.exceptions.ValidationError: [" value has an invalid format. It must be in YYYY-MM-D



##models.py

class Questions:
    question_text = models.CharField(max_length=200)
    pub_date = models.DateField(null=True, blank=True, default='')
    slug = `models.CharField(max_length=10, unique=True, default="question")`
    def __str__(self):
        return self.question_text

#views.py

def import_sheet(request):
        if request.method == "POST":
        form = UploadFileForm(request.POST,
                              request.FILES)
        if form.is_valid():
            request.FILES['file'].save_to_database(
                name_columns_by_row=2,
                model=Question,
                mapdict=['question_text', 'pub_date', 'slug'])
            return HttpResponse("OK")
        else:
            return HttpResponseBadRequest()
    else:
        form = UploadFileForm()
    return render(request, 'perfimport/import.html', {'form': form})

终端输出

Internal Server Error: /import/
Traceback (most recent call last):
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangocorehandlersexception.py", l
ine 34, in inner
    response = get_response(request)
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangocorehandlersbase.py", line 1
15, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangocorehandlersbase.py", line 1
13, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:UsersDesktopPerfImportimporterperfimportviews.py", line 20, in import_sheet
    mapdict=['question_text', 'pub_date', 'slug'])
  File "C:UsersAppDataLocalContinuumanaconda3libsite-packagesdjango_excel__init__.py", line
 49, in save_to_database
    pe.save_as(**params)
  File "C:UsersAppDataLocalContinuumanaconda3libsite-packagespyexcelcore.py", line 82, in s
ave_as
    return sources.save_sheet(sheet, **dest_keywords)
  File "C:UsersAppDataLocalContinuumanaconda3libsite-packagespyexcelinternalcore.py", line
 48, in save_sheet
    return _save_any(a_source, sheet)
  File "C:UsersAppDataLocalContinuumanaconda3libsite-packagespyexcelinternalcore.py", line
 60, in _save_any
    a_source.write_data(instance)
  File "C:UsersAppDataLocalContinuumanaconda3libsite-packagespyexcelpluginssourcesdb_sour
ces.py", line 65, in write_data
    **self._keywords
  File "C:UsersAppDataLocalContinuumanaconda3libsite-packagespyexcelpluginsrenderersdjang
o.py", line 37, in render_sheet_to_stream
    **keywords
  File "C:UsersAppDataLocalContinuumanaconda3libsite-packagespyexcel_ioio.py", line 129, in
 save_data
    **keywords
  File "C:UsersAppDataLocalContinuumanaconda3libsite-packagespyexcel_ioio.py", line 146, in
 store_data
    writer.write(data)
  File "C:UsersAppDataLocalContinuumanaconda3libsite-packagespyexcel_iobook.py", line 221,
in write
    sheet_writer.close()
  File "C:UsersAppDataLocalContinuumanaconda3libsite-packagespyexcel_iodatabaseimportersd
jango.py", line 54, in close
    self.__objs, batch_size=self.__batch_size
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelsmanager.py", line 82
, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelsquery.py", line 474,
 in bulk_create
    ids = self._batched_insert(objs_without_pk, fields, batch_size, ignore_conflicts=ignore_conflicts)
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelsquery.py", line 1211
, in _batched_insert
    self._insert(item, fields=fields, using=self.db, ignore_conflicts=ignore_conflicts)
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelsquery.py", line 1186
, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelssqlcompiler.py", li
ne 1331, in execute_sql
    for sql, params in self.as_sql():
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelssqlcompiler.py", li
ne 1275, in as_sql
    for obj in self.query.objs
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelssqlcompiler.py", li
ne 1275, in <listcomp>
    for obj in self.query.objs
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelssqlcompiler.py", li
ne 1274, in <listcomp>
    [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelssqlcompiler.py", li
ne 1215, in prepare_value
    value = field.get_db_prep_save(value, connection=self.connection)
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelsfields__init__.py",
 line 789, in get_db_prep_save
    return self.get_db_prep_value(value, connection=connection, prepared=False)
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelsfields__init__.py",
 line 1273, in get_db_prep_value
    value = self.get_prep_value(value)
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelsfields__init__.py",
 line 1268, in get_prep_value
    return self.to_python(value)
  File "C:UsersAppDataRoamingPythonPython37site-packagesdjangodbmodelsfields__init__.py",
 line 1243, in to_python
    params={'value': value},
django.core.exceptions.ValidationError: ["'pub_date' value has an invalid date format. It must be in YYYY-MM-DD form

您的默认日期不能是一个空字符串。由于您允许使用NULL,因此不要设置默认值,如果丢失日期,则只需NULL即可。

所以更改:

pub_date = models.DateField(null=True, blank=True, default='')

to:

pub_date = models.DateField(null=True, blank=True)

这是您试图放入数据库或由您的表格引起的数据的错误。似乎它更有可能来自模型验证,但是没有表格类,我不确定。

我假设这是来自问题模型上的pub_date字段,因此输入的数据不在格式/模型所期望的格式中。如果您可以共享实际数据(或一个有用的示例(,我们可以帮助解决故障排除到底导致错误。

如果您正在为创建表的创建此代码,那么它将给出验证错误,因为 date 必须在中日期格式 default =&quord;&quord;&quot; 。Soln。1 =&gt;尝试不提及 default =''soln.2 =&gt;如果您是更改表,如果您会遇到上述错误,则必须删除所有迁移文件夹并再次运行型号。这个对我有用。

相关内容

最新更新