【发布时间】:2016-06-08 19:36:34
【问题描述】:
我试图在模板视图中有效地返回实体列表以及它们各自引用的实体。例如
我们正在使用两种类型:
class Event(ndb.Model):
"""An fun activity or event"""
name = ndb.StringProperty()
venue = ndb.KeyProperty()
class Venue(ndb.Model):
"""The venue of an event"""
name = ndb.StringProperty()
address = StringProperty()
Event 类通过 ndb.KeyProperty() 引用 Venue。要将活动列表及其各自的场地显示到模板中,我可以先执行以下查询:
# we can fetch this from memcache
events = Event.query().fetch()
那么,在我看来:
{% for event in events %}
Event Name: {{event.name}}
Event Venue: {{event.venue.get().name}} # is this line costly?
{% endfor %}
使用这种方法,我认为对于每个活动,都会有get() 呼叫其各自的场地。如果这是真的,那听起来很昂贵。假设有 100 个事件。每个页面加载将产生 100 个event.venue.get().name 请求。这意味着每天适度的 10000 次页面浏览会引发 10000 * 100 .get() 请求。听起来对吗?
这是解决这个问题的最佳方法吗?如果没有,我可以考虑哪些选择?
【问题讨论】:
标签: google-app-engine google-cloud-datastore app-engine-ndb