Django:如何解决“关键字不能是表达式”错误

时间:2018-09-29 18:44:14

标签: python django python-datetime

在下面的代码中,Listingcapitals_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}}并仅保留年,月和一天。

如何解决该错误?

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_TZTrue时,将在过滤之前将字段转换为当前时区