django - 员工经理关系 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 的单独表?
所以在个人资料页面,你可以看到用户的经理是谁,经理可以登录他的个人资料,看看他们的员工是谁(多个列表)。
解决方案
我应该只添加
reports_to
到配置文件类,然后创建一个与用户 ID 相关并具有管理器 ID 的单独表吗?
这确实是您在关系数据库中实现多对多关系的方式:使用联结表[wiki]。但是 Django 可以自动创建这样的表。如果您使用ManyToManyField
[Django-doc],Django 将自动创建联结表:
class Profile(models.Model):
# …
reports_to = models.ManyToManyField(
'self',
related_name='inferiors',
symmetrical=False
)
推荐阅读
- ios - 出现 EXC_CORPSE_NOTIFY 符号崩溃,错误时无法跟踪
- javascript - 使用 javascript 在表格中插入表单值
- python - 在 Google Cloude Engine 虚拟机上不活动后,tcp 连接滞后
- docker - 不能将另一个 python3 容器中的 postgres 容器与 psycopg2 一起使用
- javascript - 在 JS 表单中按下按钮时转到功能
- swiftui - 如何在 SwiftUI 中创建全局分数计数器变量
- google-earth-engine - 将 Shapefile 上传到 Google 地球引擎资产“错误:无效的属性名称:编号为。”
- linux - 在 Linux X86 中使用任务集在隔离 CPU 上运行进程的不同行为
- c# - 如何使用并行测试设置在 Selenium C# 和 SpecFlow 中关闭 Chrome 驱动程序并从内存中清除?
- swiftui - 如何使用正确的 onAppear 和 onDisappear 在 SwiftUI 中隐藏和取消隐藏视图并保持状态?