Python 将NDB Datetimeproperty转换为日期
我有一个NDB datetime属性存储在Google应用程序引擎上。我试图通过将datetime转换为日期,然后过滤查询中大于或等于昨天日期的内容,来查询昨天以来的所有记录。但是,我得到以下错误:Python 将NDB Datetimeproperty转换为日期,python,google-app-engine,datetime,app-engine-ndb,Python,Google App Engine,Datetime,App Engine Ndb,我有一个NDB datetime属性存储在Google应用程序引擎上。我试图通过将datetime转换为日期,然后过滤查询中大于或等于昨天日期的内容,来查询昨天以来的所有记录。但是,我得到以下错误: follower_trans = fol.query( datetime.datetime.date(fol.followed_date) >= self.yesterday).fetch() TypeError:描述符“date”需要“datetime.datetime”对象,但收
follower_trans = fol.query(
datetime.datetime.date(fol.followed_date) >= self.yesterday).fetch()
TypeError:描述符“date”需要“datetime.datetime”对象,但收到了“DateTimeProperty”
如果我只使用
datetime.date()
它会发送一个错误,需要一个整数作为参数。fol.foll\u date
是模型的属性,而不是实体的值。无法将属性转换为日期,因为它没有值。您需要修复查询构造函数:
follower_trans = fol.query(fol.followed_date >= self.yesterday).fetch()
(假设您已将self.treaty创建为datetime对象。)
此外,任何类名都可以使用大写字母。应该是:
class Fol(ndb.Model):
followed_date = ndb.DateTimeProperty(auto_now_add = True)
及
您不能将转换作为查询的一部分,因此您必须将“昨天”创建为日期时间并使用该日期时间进行筛选。当我尝试fol.followerd\u date.date()时,我遇到以下错误:AttributeError:“DateTimeProperty”对象没有属性“date”。问题是您使用的是属性而不是值。您的查询应该类似于
fol.query(fol.followed>=self.dayed)。fetch()
fol.followed\u是模型的属性,而不是实体的日期。从技术上讲,查询应该是fol.query(fol.fol.followed>=self.dayed)
这假设昨天
实际上是一个日期时间。如果是日期,您可能需要首先将其转换为日期时间。是的,错误来自尝试将属性fol.followerd\u date
转换为日期对象。
Fol.query(Fol.followed_date >= self.yesterday).fetch()