두 개의 테이블 Company와 Sales가 있고 두 데이터 세트를 단일 목록에 표시하려는 경우 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 개). 따라서 더 많은 데이터 저장소 요청을 할 가능성이 있습니다. 쿼리 객체를 반복 할 때 "sales"객체의 수가 자연 요청 크기와 거의 같아지면 약간의 차이는 있지만 그 수를 계산할 수 있을지는 의문입니다. –
더 이상 쿼리가 아니며 데이터 저장소 작업이 더 많습니다. 참조 속성을 해결하려면 데이터 스토어 get이 필요합니다. 이는 쿼리보다 훨씬 저렴합니다. –
설명 주셔서 감사합니다. 참조 속성에 대한 문서에 "각 참조 된 엔터티는 그 값이 해당 엔터티를 참조하는 모든 엔터티를 반환하는 쿼리입니다"라는 메시지가 표시됩니다. 따라서 더 많은 쿼리 (즉, 쿼리 개체)를 생성한다는 주장을 옹호하며 "데이터 저장소 작업"을 의미 할 때 "데이터 저장소 요청"을 말합니다. 쿼리 개체를 사용할 때 어떤 종류의 데이터 저장소 작업을 사용합니까? 전문가에게 맡깁니다. : –