我有一个通过外键关系形成树结构的对象列表。
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
但是这会导致数据库的多次点击并导致速度变慢,特别是当我的类别列表超出我的预期时。有没有办法优化这段代码?
答案 0 :(得分:0)
这不是Django ORM问题,而是较低级别的关系建模问题。查看nested sets and adjacency lists上的相关问题,以便更好地了解关系数据库中的选项。除此之外,你可以为这个特定的数据结构采用面向文档的(NoSQL)策略。