【发布时间】:2009-06-21 04:55:23
【问题描述】:
我使用如下模型将分层数据存储在数据存储区中:
class ToolCategories(db.Model):
name = db.StringProperty()
parentKey = db.SelfReferenceProperty(collection_name="parent_category")
...
...
我想打印所有保留层次结构的类别名称,例如:
--Information Gathering
----OS Fingerprinting
----DNS
------dnstool
----Port Scanning
------windows
--------nmap
----DNS3
----wireless sniffers
------Windows
--------Kismet
为了完成上述操作,我使用了使用反向引用功能的简单递归:
class GetAllCategories (webapp.RequestHandler) :
def RecurseList(self, object, breaks) :
output = breaks + object.name + "</br>"
for cat in object.parent_category:
output = output + self.RecurseList(cat, breaks + "--")
return output
def get (self) :
output = ""
allCategories = ToolCategories.all().filter(' parentKey = ', None)
for category in allCategories :
output = output + self.RecurseList(category, "--")
self.response.out.write(output)
由于我对 App 引擎编程非常陌生(距离我开始编写代码还不到 3 天),我不确定从数据存储访问的角度来看,这是否是完成所需工作的最优化方式。
这是最好的方法吗?如果不是,那是什么?
【问题讨论】:
标签: google-app-engine google-cloud-datastore