【问题标题】:How to use a single model 'employee' for storing employees and managers in django?如何使用单一模型“员工”在 django 中存储员工和经理?
【发布时间】:2020-07-25 09:17:38
【问题描述】:

我正在创建一个 ERP 类型系统,其中有一个名为“employee”的 django 模型(表)。

我希望公司的每个员工都成为“员工”。 (例如编码员、老板、看门人、直线经理等都将是“员工”)

我还希望一些员工拥有一名或多名直线经理。一个直线经理可以有多个员工在他/她的手下。

所以问题是如何使直线经理成为“员工”表的一部分,并在直线经理下有一个描述“员工”的字段?这样我就可以显示员工拥有的直线经理。还要显示哪个部门经理在他手下有哪些员工?

这是模型文件:

class Team(models.Model):
    name = models.CharField(max_length=64)
    t_id = models.CharField(max_length=64)
    def __str__(self):
        return self.name


class Employee(models.Model):
    
    
    first_name=models.CharField(max_length=64)
    
    last_name=models.CharField(max_length=64)
    
    e_id=models.CharField(max_length=64)

    current_role=models.CharField(max_length=64) # "coder"
    
    past_roles=models.CharField(max_length=512) # "coder, developer, janator" (seperator: ,)

    teams = models.ManyToManyField(Team, related_name="employees", blank=True)

    joining_date = models.DateTimeField(null=True,blank=True)

    desk_location=models.CharField(max_length=64)

    #How do I go about this?
    line_manager = ???


    def __str__(self):
        return self.first_name

我是 django 的新手,所以如果我遗漏了一些非常简单的东西,请原谅我。此外,如果有更优雅的解决方案需要我添加额外的表格,我不介意。

谢谢

【问题讨论】:

    标签: django postgresql django-models database-design relationship


    【解决方案1】:

    据我了解,您希望围绕这两个模型建立某种关系。您希望一名员工拥有一名或多名直属经理,以及一名经理拥有一名或多名员工。我建议您在 YouTube 上搜索和查找有关多对多关系和 Django 为此类关系提供的字段的教程 models.ManyToManyField().

    这里是关于模型间多对多关系的 Django 文档链接:https://docs.djangoproject.com/en/3.0/topics/db/examples/many_to_many/

    但是,要实现此类功能,您需要为 LineManager 本身提供另一个模型。

    我希望这会有所帮助。祝你的项目好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-12
      • 2023-03-17
      • 1970-01-01
      • 2014-09-03
      • 2022-06-14
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      相关资源
      最近更新 更多