Django查询Django 1.2的嵌套列表

时间:2013-12-03 21:43:47

标签: python mysql django

我有一个通过外键关系形成树结构的对象列表。

parent = models.ForeignKey( 'Category', related_name = 'child_set', null = True )

因此每个类别对象都有子类,它们也是类别对象。我希望将它们从数据库中拉出来,以便尽可能少地访问数据库。我以前的代码看起来像这样:

def get_nested_categories(self):
    categories = []
    for child in self.child_set.all():
         categories.append(child)
         categories += child.get_nested_categories()
    return categories

但是这会导致数据库的多次点击并导致速度变慢,特别是当我的类别列表超出我的预期时。有没有办法优化这段代码?

1 个答案:

答案 0 :(得分:0)

这不是Django ORM问题,而是较低级别的关系建模问题。查看nested sets and adjacency lists上的相关问题,以便更好地了解关系数据库中的选项。除此之外,你可以为这个特定的数据结构采用面向文档的(NoSQL)策略。