我有一个存储在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()
,它会发送一个错误,需要一个整数作为参数。
答案 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)
您无法在查询中进行转换,因此您必须创建“昨天”。作为日期时间和使用它的过滤器。