将NDB Datetime属性转换为日期
我在Google App Engine上有一个NDB的日期时间属性。我想查询从昨天开始的所有记录,方法是把日期时间转换成日期,然后过滤出所有大于或等于昨天日期的记录。但是,我遇到了以下错误:
follower_trans = fol.query(
datetime.datetime.date(fol.followed_date) >= self.yesterday).fetch()
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'DateTimeProperty'
如果我只用 datetime.date()
,就会出现错误,提示需要一个整数作为参数。
2 个回答
0
你不能在查询的时候直接进行转换,所以你需要先把“昨天”这个时间点创建成一个日期时间格式,然后再用这个时间来筛选数据。
0
fol.followed_date
是模型的一个属性,而不是某个实体的具体值。你不能把一个属性转换成日期,因为它没有实际的值。你需要修正查询构造器:
follower_trans = fol.query(fol.followed_date >= self.yesterday).fetch()
(假设你已经创建了 self.yesterday 作为一个日期时间对象。)
另外,类名的首字母应该大写。这应该是:
class Fol(ndb.Model):
followed_date = ndb.DateTimeProperty(auto_now_add = True)
还有
Fol.query(Fol.followed_date >= self.yesterday).fetch()