我有一个对象名称为Device的'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小于无效日期来获取非活动设备。

关于django - Django:在计算当前日期与数据库中日期之间的差异时遇到问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53273708/

10-14 17:45
查看更多