SQL/Python(Django)-将每一行连接到整个表

SQL/Python(Django)-将每一行连接到整个表,python,sql,django,Python,Sql,Django,我目前正在创建一个应用程序,它将人们的技能映射到各种技术。 我有三张桌子 员工 名字 系 技巧 技能名称 结果 姓名(FK) 技能(FK) 技能水平 我希望能够看到表中列出的每一位拥有每项技能的员工。我相信检索此信息的正确步骤是执行某种for循环,并从3个表中选择信息?另一种选择是,每次添加员工或技能时,都向结果表中添加行(尽管我觉得这不是正确的逻辑)。我认为这是正确的逻辑。因为你必须保持每个员工的技能水平。 假设您已经创建了三个模型 雇员 技巧 结果 当你这样做的时候 获取id=3

我目前正在创建一个应用程序,它将人们的技能映射到各种技术。 我有三张桌子

员工
  • 名字
技巧
  • 技能名称
结果
  • 姓名(FK)
  • 技能(FK)
  • 技能水平

我希望能够看到表中列出的每一位拥有每项技能的员工。我相信检索此信息的正确步骤是执行某种for循环,并从3个表中选择信息?另一种选择是,每次添加员工或技能时,都向结果表中添加行(尽管我觉得这不是正确的逻辑)。

我认为这是正确的逻辑。因为你必须保持每个员工的技能水平。 假设您已经创建了三个模型

雇员 技巧 结果

当你这样做的时候

获取id=37的员工的技能 为所有员工提供技能
现在grand_数组有一个dictionary数组,key作为employee,value作为tuple数组。然而,我的问题是,结果表并没有针对每个员工的所有技能。例如,如果我添加了一名新员工,那么他们将没有技能,也没有结果。不过,我还是希望能够看到他们的“结果”(当然是空的)。嗯。。我认为你所说的更多的是关于数据的表示,这意味着你必须依赖html、css和javascript。你可以做的是在每次添加新用户时,创建一个级别为0的技能用户条目。这是低效的,但值得研究
emp = Employee.objects.get(pk=37)

#here we will get an array which has tuple all the skills and its level for employee
skill_level_array = [(Skill.objects.filter(pk=x.skill), x.level) for x in Result.objects.filter(employee=emp)]
all_emp = Employee.objects.all()
grand_array = {}
for emp in all_emp:
    skill_level_array = [(Skill.objects.filter(pk=x.skill), x.level) for x in Result.objects.filter(employee=emp)]
    grand_array[emp] = skill_level_array