我需要的东西与SQL JOIN完全不同,因为我无法使用appengine,所以我正在寻找一种解决方法。这是要按person.lastname
排序的查询downline = User.query(User.sponsor == distributor.key).fetch()
for person in downline
orders = model.Order.all().filter('distributor_id =' , person.key.id()).filter('created >' , startdate).filter('status =', 'PAID').fetch(999999)
查询获取一个人的订单位置,基本上我有两种实体,人员和订单。我应该如何模仿我加入人(用户)实体并按人的姓氏对列表进行排序?这在SQL中很容易做到,我无法在appengine中找到方法。
你能告诉我如何在内存中添加人名吗?该函数不一定具有非常好的性能,因为它是一个报告函数。
答案 0 :(得分:1)
不要使用ID链接模型。那就是SQL方法;你需要采用noSQL方法。
不是将Order
与带有共享ID的User
隐式关联,而只需引用User
中的Order
。
class User(db.Model):
# ...
class Order(db.Model):
distributor = db.ReferenceProperty(User)
# ...
# e.g.,
order = Order()
order.distributor = User()
然后抓住您的用户,按order()
对其进行排序,然后使用Order
针对相应的filter()
抓取所有关联的User
。
distributors = User.all().filter('sponser = ', sponser).order('lastname').fetch(i)
for distributor in distributors:
orders = Order.all().filter('distributor', distributor).fetch(j)
# ...
答案 1 :(得分:1)
您可以通过育儿来连接您的人员和订单模型 - 人是订单的父对象。这样,按顺序遍历Person集并选择其顺序变得很简单。
另一种方法是使用ListPoperty,如果您使用当前API或重复属性,如果您使用NDB将订单链接到您的人员。
答案 2 :(得分:-1)
如果你真的不关心性能,这是一次性报告类型的工作,你可能想看看使用remote-api。