日期时间.time错误djang

2024-03-28 17:47:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将excel文件中的数据导入Django中的数据库。不幸的是,我在尝试导入时间时遇到了这个错误。你知道吗

    AttributeError at /datavisual/upload/
'datetime.time' object has no attribute 'total_seconds'

你知道吗型号.py你知道吗

CallRecord(models.Model):
    timeOfCall = models.DurationField()

在我的Excel逻辑文件中:

class ExcelParser():

 def read_excel(Document):
    wb2 = load_workbook('Sheet1.xlsx',guess_types=True)
    for row in wb2.active.iter_rows(range_string=wb2.active.calculate_dimension()):
        newRecord = CallRecord.objects.create(timeOfCall = row[1].value)
        newRecord.save()

到目前为止,其余字段正在按预期保存,但我不确定是什么导致了此问题。你知道吗

完整错误报告:

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/datavisual/upload/

Django Version: 2.0.1
Python Version: 3.6.4
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'datavisual.apps.DatavisualConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback:

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\exception.py" in inner
  35.             response = get_response(request)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args,  **callback_kwargs)

File "C:\Michael\callcentre\callcentre\datavisual\views.py" in model_form_upload
  29.             ExcelParser.read_excel(request.FILES['file'])

File "C:\Michael\callcentre\callcentre\datavisual\ExcelParser.py" in read_excel
  21.               invoiceNumber = row[19].value)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\manager.py" in manager_method
  82.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\query.py" in create
  417.         obj.save(force_insert=True, using=self.db)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\base.py" in save
  729.                        force_update=force_update, update_fields=update_fields)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\base.py" in save_base
  759.             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\base.py" in _save_table
  842.             result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\base.py" in _do_insert
  880.                                using=using, raw=raw)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\manager.py" in manager_method
  82.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\query.py" in _insert
  1125.         return query.get_compiler(using=using).execute_sql(return_id)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql
  1280.             for sql, params in self.as_sql():

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\sql\compiler.py" in as_sql
  1233.                 for obj in self.query.objs

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\sql\compiler.py" in <listcomp>
  1233.                 for obj in self.query.objs

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\sql\compiler.py" in <listcomp>
  1232.                 [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\sql\compiler.py" in prepare_value
  1172.             value = field.get_db_prep_save(value, connection=self.connection)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\fields\__init__.py" in get_db_prep_save
  767.         return self.get_db_prep_value(value, connection=connection, prepared=False)

File "C:\Users\d_aqu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\fields\__init__.py" in get_db_prep_value
  1634.         return int(round(value.total_seconds() * 1000000))

Exception Type: AttributeError at /datavisual/upload/
Exception Value: 'datetime.time' object has no attribute 'total_seconds'

Tags: djangoinpydbmodelslibpackageslocal
2条回答

报告的错误非常明显:

AttributeError at /datavisual/upload/
'datetime.time' object has no attribute 'total_seconds'

告诉你到底发生了什么并不容易,因为你给出的回溯与你提供的代码不符。 无论如何,在某个时刻,您可能试图用^{}值初始化^{},而它应该用^{}填充。你知道吗

您可以调试代码并确保Excel文档解析器返回^{}对象,而不是^{}。你知道吗

看这条线

newRecord = CallRecord.objects.create(timeOfCall = row[1].value)

检查row[1].value返回的值,如果我信任回溯,请查看文件ExcelParser.py的第21行:

invoiceNumber = row[19].value)

datetime.time值转换为timedelta不是什么大事。您只需要知道time值到底代表什么,并计算相应的持续时间(例如:从同一天的午夜开始,从同一年的1月1日开始,等等)。更多信息请参见this post。你知道吗

相关问题 更多 >