我创建了一个审批系统。我有一个ApprovalProcess
模型。这个模型有end_date
和begin_date
。结束日期-开始日期是持续时间。我有几个ApprovalProcess模型,我想找出所有ApprovalProcess对象的总平均持续时间。我找不到结束日期和开始日期之间的差异。它给出了一个错误:
TypeError at /approval/logs unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
我怎么做
型号.py
class ApprovalProcess(models.Model):
...
begin_date = models.DateTimeField(null=True)
end_date = models.DateTimeField(null=True)
...
视图.py
def log_records(request):
...
approval_list = ApprovalProcess.objects.filter(user_id=request.user)
delta = 0
approval_list = ApprovalProcess.objects.filter(customer__company=request.user.company)
for approval_object in approval_list:
delta = abs((approval_object.end_date - approval_object.begin_date).days)
...
回溯
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/approval/logs
Django Version: 3.1.4
Python Version: 3.8.8
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'register',
'customer',
'financial_analysis',
'ocr',
'core',
'approvals',
'crispy_forms',
'ckeditor',
'rest_framework',
'requests',
'ckeditor_uploader',
'django_filters',
'activity_log',
'djmoney',
'djmoney.contrib.exchange']
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 (most recent call last):
File "C:\Users\USER\OneDrive\Documents\GitHub\otc\myvenv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\USER\OneDrive\Documents\GitHub\otc\myvenv\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\USER\OneDrive\Documents\GitHub\otc\approvals\views.py", line 501, in log_records
delta = abs((approval_object.end_date - approval_object.begin_date).days)
Exception Type: TypeError at /approval/logs
Exception Value: unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime'
当查询中的“结束日期”为“无”时,可以进行筛选:
approval_list = ApprovalProcess.objects.filter(user_id=request.user).exclude(end_date=None)
试试这个
更新问题
相关问题 更多 >
编程相关推荐