在下面的代码中,Listing
是capitals_listings_from_latest_Celery_scrape = capitals_listings_all.filter(date_added.date()=latest_Celery_scrape_date)
个模型对象的QuerySet:
date_added.date()
但是,我目前得到
“关键字不能是表达式”
由于.date()
部分,导致此行出现错误。
我使用date_added
的原因是,为了针对latest_Celery_scrape_date
正确评估date_added
,我需要从时间数据中删除{{1}}并仅保留年,月和一天。
如何解决该错误?
答案 0 :(得分:1)
问题在于您以关键字(参数名称)的形式进行调用,而参数名称应为标识符:
capitals_listings_from_latest_Celery_scrape = capitals_listings_all.filter(
date_added.date()=latest_Celery_scrape_date
)
如果使用这种语法,则确实会出现此错误,例如:
>>> id(id()=3)
File "", line 1
SyntaxError: keyword can't be an expression
但是Django对此有一个查询:__date
[Django-doc]查询。因此您可以像这样查询:
capitals_listings_from_latest_Celery_scrape = capitals_listings_all.filter(
date_added__date=latest_Celery_scrape_date
)
但是请注意,时间戳记date
本身就是一个复杂的问题,因为人们可以在该特定时区查找日期,或者在 current中查找该时间戳记的数据时区。
如__date
查找文档中所述:
当
USE_TZ
为True
时,将在过滤之前将字段转换为当前时区。