Python 订单不适用于应用程序引擎ndb中的结构化属性

Python 订单不适用于应用程序引擎ndb中的结构化属性,python,google-app-engine,app-engine-ndb,Python,Google App Engine,App Engine Ndb,我有一个模型 from rated.lib import utility, data, money, search, kigo class Property(ndb.Model): created_at = data.UTCDateTimeProperty(auto_now_add=True) updated_at = data.UTCDateTimeProperty(auto_now_add=True, auto_now=True, indexed=False) users = n

我有一个模型

from rated.lib import utility, data, money, search, kigo
class Property(ndb.Model):
  created_at = data.UTCDateTimeProperty(auto_now_add=True)
  updated_at = data.UTCDateTimeProperty(auto_now_add=True, auto_now=True, indexed=False)
  users = ndb.KeyProperty(repeated=True)
  user = ndb.KeyProperty()
  rent_ = money.MoneyStructuredProperty(name='rent')
  rent = money.structured_value(rent_)
但当我尝试使用查询通过租金获取记录订单时-

properties = Property.query().order(Property.rent)
这给了我一个错误-

TypeError: order() expects a Property or query Order; received <super: <class 'structured_value'>, <structured_value object>>
我是ndb的新手,浪费时间来修复这件事。。。。。。
任何帮助都将不胜感激,因为错误表明您没有尝试按
属性
查询订单

什么是
money.structured\u value(租金)
call return?你认为它将如何工作

根据您的代码,假设您的
MoneyStructuredProperty
甚至可以订购或订购,您应该根据
rent>订购

好的,您已经包含了结构化值的代码,而这不是构建自定义属性的方式,因此您当然不能按它排序

阅读构建结构化属性,首先,它们必须继承自ndb.Model

class structured_value(object):
 def __init__(self, field):
    self.field = field

 def __get__(self, instance, owner):
    if instance is None:
        return super(structured_value, self).__get__(instance, owner)

    value = self.field.__get__(instance, owner)

    if value is None:
        return None

    if value.cached is None:
        value.cached = Money(value.value, value.currency)
    print
    return value.cached

 def __set__(self, instance, value):
    if value is None:
        self.field.__set__(instance, value)
        return

    model_value = MoneyModel(
        value=str(value.value),
        currency=value.currency
    )

    model_value.cached = value

    self.field.__set__(instance, model_value)