我在Google App Engine中有一个python程序
当我将密钥作为字符串时,在数据存储区中查找对象时,如何进行直接读取。下面是我执行循环的代码,不是很好.....
class Opportunity(db.Model):
customer = db.ReferenceProperty(Customer,collection_name='opportunitys')
BNusername = db.StringProperty()
opportunity_no = db.StringProperty()
# etc etc etc.....
#BnPresets holds the object key as a string
opportunitys = Opportunity.all()
opportunitys.filter('BNusername =',BnPresets.myusername)
for oprec in opportunitys:
if str(oprec.key()) == BnPresets.recordkey:
opportunity = oprec
# I have the object here and can process etc etc
答案 0 :(得分:4)
您可以通过将db.Key
直接传递给构造函数来实例化opportunity_key = db.Key(BnPresets.recordkey)
:
db.get
完成后,只需opportunity = db.get(opportunity_key)
即可获得此密钥标识的实体:
if opportunity.BNusername == BnPresets.myusername
process_opportunity(opportunity)
我猜(通过查看您使用的查询)您还想验证您所拥有的对象的用户名:
{{1}}
那应该是它。最重要的是,您应首先使用密钥 - 因为它唯一标识您的实体 - 而不是查询其他属性并迭代结果。