gpt4 book ai didi

python - 如何使用 ReferenceProperty 访问模型中的项目?

转载 作者:行者123 更新时间:2023-11-30 23:56:19 25 4
gpt4 key购买 nike

这是 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()

在数据存储区中,我在“用户”下有此条目:

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)

但是 per vonPetrushev's answer result.venues 应该获取与此 userEmail 关联的 venue

抱歉,如果这令人困惑:我只是尝试使用 ReferenceProperty 访问链接到 userEmail 的表。链接表是VenueComment。如何访问 VenueComment 中的项目?谢谢。

最佳答案

venues 实际上是 query目的。因此,您需要获取或迭代它。

尝试用循环替换 self.response.out.write(result.venues) 行:

query = User.all()
users = query.fetch(10)
self.response.out.write("<html><body><ol>")
for user in users:
self.response.out.write("<li>")
self.response.out.write(user.userEmail)
self.response.out.write("<ul>")
# Iterate over the venues
for venue in user.venues:
self.response.out.write("<li>%s</li>" % venue.venue)
self.response.out.write("</ul></li>")
self.response.out.write("</ol></body></html>")

但是,这不会很好地扩展。如果有 10 个用户,它将运行 11 个查询!确保您使用的是Appstats寻找诸如此类的性能问题。尽量减少 RPC 调用的次数。

更好的解决方案可能是非规范化并将用户的电子邮件存储在 Venue 类型上。这样您只需要一次查询即可打印 field 信息和用户电子邮件。

关于python - 如何使用 ReferenceProperty 访问模型中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4316276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com