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)