如果我有两个表格,即公司和销售人员,并且想要在一个列表中显示两组数据,那么我将如何使用GQL在Google App Engine上执行此操作?在Google AppEngine上合并两个表格的最佳方式是什么?
的车型有:
class Company(db.Model):
companyname = db.StringProperty()
companyid = db.StringProperty()
salesperson = db.StringProperty()
class Sales(db.Model):
companyid = db.StringProperty()
weeklysales = db.StringProperty()
monthlysales = db.StringProperty()
的意见是:
def company(request):
companys = db.GqlQuery("SELECT * FROM Company")
sales = db.GqlQuery("SELECT * FROM Sales")
template_values = {
'companys' : companys,
'sales' : sales
}
return respond(request, 'list', template_values)
列表HTML包括:
{%for company in companys%}
{% for sale in sales %}
{% ifequal company.companyid sales.companyid %}
{{sales.weeklysales}}
{{sales.monthlysales}}
{% endifequal %}
{% endfor %}
{{company.companyname}}
{{company.companyid}}
{{company.salesperson}}
{%endfor%}
任何帮助将不胜感激。
被警告,这会产生更多的查询(每个公司1个,而不是2个)。因此它有可能会做更多的数据存储请求。如果在查询对象上迭代时,“销售”对象的数量碰巧与自然请求大小大致相同,那么它几乎没什么区别,但我怀疑这可以算作。 – 2009-08-18 19:50:47
不是更多的查询,而是更多的数据存储操作。解决引用属性需要获取数据存储,这比查询便宜得多。 – 2009-08-19 08:12:19
感谢您的澄清 - 引用属性的文档说,“每个引用的实体获取一个属性,其值是一个查询,返回所有引用它的实体”。所以我捍卫我的说法,即创建更多查询(即查询对象),并且当我指“数据存储操作”时,我说“数据存储请求”。 Query对象在使用时发出什么样的数据存储操作,我请专家:-) – 2009-08-19 11:08:33