将NDB Datetime属性转换为日期

1 投票
2 回答
1739 浏览
提问于 2025-04-18 11:27

我在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()

撰写回答