首页 > 解决方案 > 员工经理关系 SQLITE DJANGO

问题描述

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

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

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

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 的单独表?

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

标签: djangosqliterelationship

解决方案


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

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

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

推荐阅读