django - Django:计算数据库中今天日期和日期之间的差异时出现问题
问题描述
我有一个带有“trandate”属性的对象名称设备。
我想得到今天日期和数据库日期之间的差异。
然后计算设备的inactive_days大于31的设备数量。
这是我的代码。
todays_date = datetime.now()
trandate = request.GET.get('devc_trandate')
inactive_days = todays_date - datetime(trandate)
inactive_devices = Cust.objects.values('name').annotate(inact_devc_count = Count('devc',filter=Q(inactive_days__gte=31)))
但我得到了一个错误。
an integer is required (got type NoneType)
追溯:
File "C:\Python\Python36\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Python\Python36\lib\site-packages\django\core\handlers\base.py" in _get_response
126. response = self.process_exception_by_middleware(e, request)
File "C:\Python\Python36\lib\site-packages\django\core\handlers\base.py" in _get_response
124. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\customers\views.py" in DevSummary_more
178. inactive_days = todays_date - datetime(trandate)
Exception Type: TypeError at /summary/more/
Exception Value: an integer is required (got type NoneType)
解决方案
错误显示'devc_trandate'
为无。
还有另一种方法可以做到这一点:
todays_date = datetime.now()
inactive_date = todays_date - timedelta(days=31)
inactive_devices = Cust.objects.values('name').annotate(inact_devc_count = Count('devc',filter=Q(devc__trandate__lt=inactive_date)))
由于您要获取设备的 inactive_days 大于 31 的设备数量,因此您可以today - 31
获取日期,然后您可以通过检查哪个 trandate 小于非活动日期来获取非活动设备。
推荐阅读
- python - 如何通过python pandas删除数据框中的重复数据记录
- numpy - 从嵌套循环转移到 NumPy 迭代
- angular - 徽章组件 Angular 活动元素?
- java - Java - 将项目从 zip 文件移动到受密码保护的 zip 文件中
- excel - Excel:我想删除同一行和多列中的重复值
- c# - 在 Linux 上运行/发布 C# 应用程序需要什么?
- common-data-service - 如何从外部应用程序将数据存储在 Power Platform 的 Common Data Service 中?
- standardjs - 如何在 coc.nvim 中使用 standardjs 进行格式化?
- python - 使用 json.dumps() 创建 int 的子类,意外行为
- typescript - 错误 TS2339:“日期”类型上不存在属性“addHours”