BadValueError: Unsupported type for property <type 'datetime.date'>

BadValueError: Unsupported type for property <type 'datetime.date'>

我正在查询具有日期值的字符串 属性 上带有过滤器的数据存储类型。我试图访问的 Kind 属性 actual_reported_date 没有明确定义,而是一个 String 类型的动态属性。将 属性 值存储为字符串类型而不是日期类型是错误的。现在有没有一种方法可以用字符串格式的日期比较来过滤数据集?目标是过滤 actual_reported_date 属性 值大于输入 ( from_date_formatted )

的记录
BadValueError: Unsupported type for property <type 'datetime.date'>

抛出异常的代码

from_date_formatted = datetime.datetime.strptime(from_date, '%Y-%m- 
                        %d').date()
query = EarningsSurprise.query(EarningsSurprise.ticker == ticker)
query = 
     query.filter(ndb.GenericProperty('actual_reported_date') >= 
                  from_date_formatted)
result = list(query.fetch()) # ( Exception is thrown at this point)

实体

class EarningsSurprise(ndb.Expando):
  stock_code = ndb.StringProperty()
  ticker = ndb.StringProperty()
  original_data_source = ndb.StringProperty()
  actual_data_provider = ndb.StringProperty()

  created = ndb.DateTimeProperty(auto_now_add=True)
  updated = ndb.DateTimeProperty(auto_now=True)

  @classmethod
  def create(cls, **kv):
    return EarningsSurprise(**kv)

您不需要在 strptime 上放置 date()。它已经这样做了:

from_date_formatted = datetime.datetime.strptime(from_date, '%Y-%m-%d')

接下来,actual_reported_date定义在哪里?如果你有一个字符串格式的日期,你可以很容易地按 YYYYMMDDHHMMSS 排序......所以,你可以通过以下方式测试不平等(作为字符串!):

from_date >= actual_reported_date # e.g. ('2018-05-22' >= '2017-11-22')