我正在尝试使用 GAE 创建一个 Web 应用程序,数据结构由 Dockets、Projects 和 Tasks 组成。
每个案卷有多个项目,每个项目依次有多个任务。在案卷页面上,我需要显示案卷下的所有内容,因此:
- 项目1:任务a,任务b,任务c,....
- 项目2:任务a,任务c,任务c,......等等......
我设法使用以下代码将所有项目显示在列表中,但是在显示每个项目下的任务时我迷失了。作为 GAE、python 和网络应用程序的完全新手,我什至不知道要搜索的术语,而且我的搜索并没有太大帮助……也许这里有人可以提供帮助。
class DocketPage(BaseRequestHandler):
_OUTPUT_TYPES = {
'default': ['text/html', 'html'],
}
def get(self):
docket = Docket.get(self.request.get('id'))
docket_name = docket.name
if not docket:
self.error(403)
return
projects_query = Project.all().ancestor(
docket)
projects = projects_query.fetch(10)
for project in projects:
tasks_query = Task.all().ancestor(project)
tasks = tasks_query.fetch(10)
# Choose a template based on the output type
output_name = self.request.get('output')
output_name_list = DocketPage._OUTPUT_TYPES.keys()
if output_name not in output_name_list:
output_name = output_name_list[0]
output_type = DocketPage._OUTPUT_TYPES[output_name]
self.response.headers['Content-Type'] = output_type[0]
self.generate('docket_' + output_name + '.' + output_type[1], {
'docket': docket,
'projects': projects,
'tasks' : tasks,
})
通过以下列方式更改代码,我设法让任务显示在模板中。然而,这显然没有帮助,因为无法知道项目和任务的数量。
tasks_query = Task.all().ancestor(projects[0])
tasks = tasks_query.fetch(10)