Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在一个查询中检索存在于一个相关模型中的用户_Mysql_Django - Fatal编程技术网

Mysql 在一个查询中检索存在于一个相关模型中的用户

Mysql 在一个查询中检索存在于一个相关模型中的用户,mysql,django,Mysql,Django,我在这里寻找可以提高速度和效率的ORM或原始SQL。首先,设计(imho)是最好的,但我愿意接受建议,因为这就是客户业务的运作方式 用户/员工在人力资源结构中的特定“点”工作,如下所示。在人力资源结构中,有些人可以有办公室(比如一个主管可以在下面有办公室,可以分配员工),或者根本没有办公室 class User(models.Model): username=models.CharField(max_length=20) class Head(models.

我在这里寻找可以提高速度和效率的ORM或原始SQL。首先,设计(imho)是最好的,但我愿意接受建议,因为这就是客户业务的运作方式

用户/员工在人力资源结构中的特定“点”工作,如下所示。在人力资源结构中,有些人可以有办公室(比如一个主管可以在下面有办公室,可以分配员工),或者根本没有办公室

     class User(models.Model):
        username=models.CharField(max_length=20)

     class Head(models.Model):
        name=models.CharField(max_length=20)

     class Dept(models.Model):
        name=models.CharField(max_length=20)
        head=models.ForeignKey(Head)


     class Division(models.Model):
        name=models.CharField(max_length=20)
        dept=models.ForeignKey(Dept) 

     class Unit(models.Model):
        name=models.CharField(max_length=20)
        Division=models.ForeignKey(Division)   

     class Office(models.Model):
        name=models.CharField(max_length=20)
        head=models.ForeignKey(Head,db_index=True,null=True)   
        dept=models.ForeignKey(Dept,db_index=True,null=True)    
        division=models.ForeignKey(Division,db_index=True,null=True)    
        unit=models.ForeignKey(Unit,db_index=True,null=True) 

     class Positions(models.Model):
          user=models.ForeignKey(User)
          head=models.ForeignKey(Head,db_index=True,null=True)   
          dept=models.ForeignKey(Dept,db_index=True,null=True)    
          division=models.ForeignKey(Division,db_index=True,null=True)    
          unit=models.ForeignKey(Unit,db_index=True,null=True) 
          office=models.ForeignKey(Office,db_index=True,null=True) 
现在,我想得到一个用户的位置列表,并有一个友好的输出。例如,如果他在部门工作,我需要该部门的名称以及该部门的负责人。如果他在某个部门的办公室工作,我想知道办公室、部门、部门和负责人的姓名

到目前为止,我得到的信息是原样的(officename返回,其余为null)


关于如何在单个查询中改进查询(raw或orm)的任何建议?

请共享模型代码。@art06请查看。您确定这些值已正确设置为position对象吗?哦,是的。后端在插入它们之前执行所有正确的检查。
    positions=Position.objects.filter(user_id=1).values('id','office__name','head__name','dept__name','division__name','unit__name')