如何使用ReferenceProperty访问模型中的项目?
这是对我之前的问题的跟进。
我使用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()
在数据存储区中,我在User下有这个条目:
Entity Kind: User
Entity Key: ag1oZWxsby0xLXdvcmxkcgoLEgRVc2VyGBUM
ID: 21
userEmail: az@example.com
并在地点下:
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)
但根据vonPetrushev的回答result.venues
应该抓住与此ѭ9相关的venue
。
很抱歉,如果这令人困惑:我只是想通过ReferenceProperty
访问链接到userEmail
的表格。链表是Venue
和Comment
。如何访问Venue
或Comment
中的项目?谢谢。
没有找到相关结果
已邀请:
1 个回复
寇剩
实际上是一个查询对象。所以你需要获取或迭代它。 尝试用循环替换
线:
但是,这不会很好地扩展。如果有10个用户,则会运行11个查询!确保您使用Appstats来查找这些性能问题。尽量减少所做的RPC调用次数。 更好的解决方案可能是将用户的电子邮件反规范化并存储在Venue类型上。这样,您只需要一个查询来打印场地信息和用户电子邮件。