组织结构图的Django模型结构

时间:2015-12-28 16:21:06

标签: django database-schema

我需要为公司的职位建立组织结构图(CTO回答CEO,开发人员回答CTO等),我需要创建一个友好的用户界面来反映这一点。 UI部分现在不是我关注的问题,因为如果我构建后端正确,前端将很容易。

因此,如果不使用任何花哨的模式(如图表),Position模型的最佳结构是什么(当我获取组织结构图时,让我的生活变得更轻松)?

到目前为止,我已经想到了类似下面这样的内容,但如果我需要在组织结构图中深入10级,那么拥有parent外键对我来说将无济于事。

class Position(models.Model):
    name = models.CharField(max_length=100)
    company = models.ForeignKey(Company)  # irrelevant
    level = models.PositiveSmallIntegerField()  # depth level (not sure if I need this since I have parent_position)
    parent_position = models.ForeignKey("self")

PS。在我的问题的早期,我想避免使用图表等,仅仅是因为我对它们一无所知,并且时间紧迫。在这种情况下,学习和使用图表会有很多帮助吗?

1 个答案:

答案 0 :(得分:3)

您可以将django-mptt包用于项目。它将您的HR部分组成一个树结构并在一个批处理中查询子树而不遍历树。这样的事情应该让你开始(显然没有生产):

from mptt.models import MPTTModel, TreeForeignKey, TreeManager

class Organization(MPTTModel):
    name = models.CharField(max_length=255, unique=True)
    members = models.ManyToManyField(User)
    parent = TreeForeignKey('self', related_name='children')
    objects = TreeManager()
相关问题