以下两种带过滤器的查询方法有什么区别?
@classmethod
def get_by_user_id(cls, ancestor_key, user_id):
return cls.query(cls.user_id==user_id, ancestor=ancestor_key).get()
和
@classmethod
def get_by_user_id(cls, ancestor_key, user_id):
return cls.query(user_id=user_id, ancestor=ancestor_key).get()
似乎给出相同的结果,这些结果是按user_id的值过滤的条目。感谢。
答案 0 :(得分:4)
你会发现这个简单的情况没有区别。第二个是第一个样式的快捷方式,使用关键字args查找属性名称。
但是你不能在你想要的时间内使用第二种风格的不等式过滤器< ,使用IN()运算符或排序顺序。
使用表达式时,会创建一个FilterNode或PropertyOrder实例。例如
dev~cash-drawer> models.InvoiceItem.price == 100
FilterNode('price', '=', 10000)
dev~cash-drawer> models.InvoiceItem.price.IN([100,])
FilterNode('price', '=', 10000)
dev~cash-drawer> -models.InvoiceItem.price
PropertyOrder(<price>, DESCENDING)
您只能使用关键字参数来表达所有内容。