我有以下简化模型:
class Part(models.Model):
identification = models.CharField(max_length=50)
parent_part = models.ForeignKey('Part',blank=True,null=True)
weight = models.DecimalField(max_digits=12,decimal_places=3)
正如你所看到的,一个零件可以由其他零件组成,每个零件都有自己的重量,形成一棵树。当然,顶级部分(根)将没有“parent_part”。
我现在正在努力实现一种方法来总结所有子部分的所有权重。
到目前为止,我所有的想法都属于某种形式的递归,我知道这应该避免。
据我所知,我认为适当的解决方案是通过模型经理,但我不确定如何。
有什么建议吗?
答案 0 :(得分:1)
相邻列表(父/子关系)是建模树结构的一种方式,但它不是唯一的方法,并且在某些树操作中可能效率低下,例如在您的示例中的子树聚合
如果性能对您的应用程序至关重要,并且查询模式是读取密集型的,请考虑使用替代模型,例如nested set。
可能相关的问题,