将NDB Datetimeproperty转换为日期

时间:2014-06-28 22:47:49

标签: python google-app-engine datetime app-engine-ndb

我有一个存储在Google App Engine上的NDB日期时间属性。我试图通过将datetime转换为日期来查询昨天以来的所有记录,然后将查询过滤为大于或等于昨天日期的任何内容。但是,我收到以下错误:

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

答案 1 :(得分:0)

您无法在查询中进行转换,因此您必须创建“昨天”。作为日期时间和使用它的过滤器。