这是my previous question的后续内容。在
我使用ReferenceProperty设置模型:
class User(db.Model):
userEmail = db.StringProperty()
class Comment(db.Model):
user = db.ReferenceProperty(User, collection_name="comments")
comment = db.StringProperty(multiline=True)
class Venue(db.Model):
user = db.ReferenceProperty(User, collection_name="venues")
venue = db.StringProperty()
在数据存储中,我在“用户”下有以下条目:
^{pr2}$场地下:
Entity Kind: Venue
Entity Key: ag1oZWxsby0xLXdvcmxkcgsLEgVWZW51ZRhVDA
ID: 85
venue (string): 5 star venue
user (Key): ag1oZWxsby0xLXdvcmxkcgoLEgRVc2VyGBUM
User: id=21
我试图在hw.py
中显示项目,如下所示
query = User.all()
results = query.fetch(10)
self.response.out.write("<html><body><ol>")
for result in results:
self.response.out.write("<li>")
self.response.out.write(result.userEmail)
self.response.out.write(result.venues)
self.response.out.write("</li>")
self.response.out.write("</ol></body></html>")
这条线工作:
self.response.out.write(result.userEmail)
但这条线行不通:
self.response.out.write(result.venues)
但是as per vonPetrushev's answerresult.venues
应该抓住与这个userEmail
相关的{
抱歉,如果这是令人困惑的:我只是试图访问链接到userEmail
与{Venue
和Comment
。如何访问Venue
或Comment
中的项目?谢谢。在
venues
实际上是一个query对象。所以您需要获取或迭代它。在尝试用循环替换
self.response.out.write(result.venues)
行:然而,这将不会很好地扩展。如果有10个用户,它将运行11个查询!请确保您正在使用Appstats查找类似这些性能问题。尽量减少RPC调用的次数。在
更好的解决方案可能是将用户的电子邮件非规范化并存储在场所类型上。你只需要一种方式来打印你需要的信息。在
相关问题 更多 >
编程相关推荐