如果我有兩個表格,即公司和銷售人員,並且想要在一個列表中顯示兩組數據,那麼我將如何使用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