组织结构图的 Django 模型结构
Django model structure for org charts
我需要为公司职位构建组织结构图(CTO 对 CEO 的回答,开发人员对 CTO 的回答,等等),我需要创建一个友好的 UI 来反映这一点。 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。在我的问题的前面,我想避免使用图表等,仅仅是因为我对它们的了解为零,而且时间紧迫。在这种情况下,学习和使用图表会有很大帮助吗?
您可以为项目使用 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()
我需要为公司职位构建组织结构图(CTO 对 CEO 的回答,开发人员对 CTO 的回答,等等),我需要创建一个友好的 UI 来反映这一点。 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。在我的问题的前面,我想避免使用图表等,仅仅是因为我对它们的了解为零,而且时间紧迫。在这种情况下,学习和使用图表会有很大帮助吗?
您可以为项目使用 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()