建模由零件组成的零件的总重量。

时间:2016-11-09 05:09:54

标签: django django-models

我有以下简化模型:

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”。

我现在正在努力实现一种方法来总结所有子部分的所有权重。

到目前为止,我所有的想法都属于某种形式的递归,我知道这应该避免。

据我所知,我认为适当的解决方案是通过模型经理,但我不确定如何。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

相邻列表(父/子关系)是建模树结构的一种方式,但它不是唯一的方法,并且在某些树操作中可能效率低下,例如在您的示例中的子树聚合

如果性能对您的应用程序至关重要,并且查询模式是读取密集型的,请考虑使用替代模型,例如nested set

可能相关的问题,

Database Structure for Tree Data Structure