python - 期待预期的字符串或类似字节的对象
问题描述
我在我的 django 应用程序上遇到了问题,但它似乎更像是一个 python 问题,虽然我看不出问题出在哪里
这是我的代码
for q in qs:
untouched_question_in_term_of_minutes = (now() - q.date) #take the current date
#and substract the date when the question was created
certain_mn_ago = untouched_question_in_term_of_minutes.total_seconds() / 60
#that gives me the number of minutes where
#the question has not been touched
limit_of_mn = 50
print(untouched_question_in_term_of_minutes)
print(certain_mn_ago)
if certain_mn_ago >= limit_of_mn:
#if the condition is fulfilled, then the action below are done
ae = AssociatedExpert.objects.filter(question=q, state='P')
ae.update(state='C')
Question.objects.filter(id=q.id, state='P').update(state='C')
qs.filter(date__lte=certain_mn_ago, state='C').update(email='***',
first_name='***',
last_name='***',
phone='***',
extra='***')
else:
ae = AssociatedExpert.objects.filter(question=q,
state__in=['D', 'T', 'A',
'F']).first()
if ae:
qs.filter(id=q.id).update(state=ae.state)
如您所见,逻辑似乎在这里。然而,它给了我下面的追溯。
TypeError at /temp_app/question/
expected string or bytes-like object
Request Method: GET
Request URL: http://127.0.0.1:8000/temp_app/question/
Django Version: 2.0.3
Exception Type: TypeError
Exception Value:
expected string or bytes-like object
Exception Location:
/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6/site-packages/django/utils/dateparse.py in parse_datetime, line 107
Python Executable: /home/andykw/cloned_projects/findoor-backend/.venv/bin/python
Python Version: 3.6.7
Python Path:
['/home/andykw/cloned_projects/findoor-backend/findoor_backend',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python36.zip',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6/lib-dynload',
'/usr/lib/python3.6',
'',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6/site-packages',
'/home/andykw/cloned_projects/findoor-backend/.venv/src/django-s3-upload',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6/site-packages/IPython/extensions',
'/home/andykw/.ipython',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6/site-packages/odf',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6/site-packages/odf',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6/site-packages/odf',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6/site-packages/odf',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6/site-packages/odf',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6/site-packages/odf',
'/home/andykw/cloned_projects/findoor-backend/.venv/lib/python3.6/site-packages/odf']
Server time: Thu, 25 Apr 2019 11:49:27 +0200
我考虑过使用 to cast untouched_question_in_term_of_minutes
and certain_mn_ago
asint
但问题仍然存在。
有趣的是,当我使用 时ipdb
,一切似乎都很好。
如果你有什么想法,我全听。
更新:我发现了问题。正是这date__lte
部分造成了问题。
解决方案
在这一行中,变量certain_mn_ago
是 afloat
因为除法。
certain_mn_ago = untouched_question_in_term_of_minutes.total_seconds() / 60
然后您使用该float
值来过滤一个名为的字段date
(我假设它是某种DateField
):
qs.filter(date__lte=certain_mn_ago, ...
这很可能是您的错误的原因,因为您无法将 afloat
与 a进行比较DateField
。
推荐阅读
- android - 在 Ubuntu 18 上构建 pyjnius 时 python-for-android 失败
- amazon-web-services - AppSync+ DynamoDB:提供的关键元素与架构不匹配(服务:AmazonDynamoDBv2;状态代码:400;错误代码:ValidationException;
- javascript - DRY 过滤?
- shell - IPython 不会捕获一些命令输出(例如,ack)
- typescript - 如何在 TS 中通过传播语法传递克隆的参数?
- date - 通过 Dateinput 使用日期输入作为文件名
- reactjs - 如何使用 react-router 在 firebase 托管的 create-react-app 中提供 robots.txt 和 sitemap.xml
- sql-server - 使用 Power BI 建立 SQL Server 索引
- ios - plist xamarin.ios 的 AppLoader 问题
- php - 从脚本文件夹外部访问图像文件的问题