【问题标题】:Employee Manager relationship SQLITE DJANGO员工经理关系 SQLITE DJANGO
【发布时间】:2023-03-17 19:04:01
【问题描述】:

老实说,我正在努力理解如何才能开始建立员工与经理的关系。

我已经阅读了一些关于 LEFT、OUTER 和 INNER 联接的内容。我正在使用 SQLite3 和 django 框架

背景: 我有一个 user 表,其中包含有关用户的信息。

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,  editable=False)
    bio = models.TextField(default='', blank=True)
    location = models.CharField(max_length=30,default='', blank=True )
    department = models.CharField(max_length=30, default='', blank=True)
    team = models.CharField(max_length=30, default='', blank=True)
    jobrole = models.CharField(max_length=20, choices=job_role)

我的最终目标是,我希望能够为多个用户提供多个经理。我是否应该将“reports_to”添加到配置文件类,然后创建一个与用户 ID 相关并具有管理器 ID 的单独表?

所以在个人资料页面上,您可以看到用户的经理是谁,经理可以登录他的个人资料并查看他们的员工是谁(多个列表)。

【问题讨论】:

    标签: django sqlite relationship


    【解决方案1】:

    我是否应该将 reports_to 添加到配置文件类,然后创建一个与用户 ID 相关并具有经理 ID 的单独表?

    这确实是您在关系数据库中实现多对多关系的方式:使用junction table [wiki]。但是 Django 可以自动创建这样的表。如果你使用ManyToManyField [Django-doc],Django 会自动创建联结表:

    class Profile(models.Model):
        # …
        reports_to = models.ManyToManyField(
            'self',
            related_name='inferiors',
            symmetrical=False
        )

    【讨论】:

      猜你喜欢
      • 2020-05-21
      • 2021-03-16
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多