使用以下ndb
模型类:
class Product(ndb.Model):
name = ndb.StringProperty()
barcode = ndb.StringProperty()
class Donation(ndb.Model):
user= ndb.UserProperty()
product = ndb.KeyProperty(kind=Product)
使用如下查询时:
donations = Donation.query().order(Donation.product).fetch(1000)
如何按donations
或Product name
对结果barcode
进行排序?
答案 0 :(得分:1)
您不能进行此类查询,至少不能使用数据存储区。排序顺序只能是相应实体模型的属性之一。
每个查询都需要一个或多个相应的数据存储区indexes。对于有序查询,您需要composite indexes,在index.yaml
文件中定义。每个此类索引在其定义中只有一个kind
,您无法在您的案例中混合多个实体类型(Donation
与Product
)。
如果您需要此类查询,您可以复制必要的信息并在更新product
属性时填写。此外,如果/当相应的Product
属性发生更改时,您可能需要更新引用它的所有Donation
个实体。
一个可能接受的中间地点是使用实际的product
属性值(密钥本身)来订购查询 - 至少您将所有捐赠链接到同一产品实体组合在一起