Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
Python Django:从表中获取值的原始查询_Python_Django_Database_Django Models_Pgadmin - Fatal编程技术网

Python Django:从表中获取值的原始查询

Python Django:从表中获取值的原始查询,python,django,database,django-models,pgadmin,Python,Django,Database,Django Models,Pgadmin,在pgAdminIII中执行此查询时,它会根据查询返回两个表的结果,但在django视图中使用相同的结果时,它只从第一个表中获取结果,而忽略v.ip、v.id、v.name字段值 有什么建议吗?作业管理器仅返回其映射表中的字段。您还需要为clientadmin_virtualmachine表创建一个模型,并在ForeignKey中使用它。当您使用原始查询时,Django将自动将额外字段添加到本例中的模型实例中。但是,当列名重叠时,总是会出现混淆。哪个列get映射到哪个字段?为了避免这种情况,应该

在pgAdminIII中执行此查询时,它会根据查询返回两个表的结果,但在django视图中使用相同的结果时,它只从第一个表中获取结果,而忽略v.ip、v.id、v.name字段值


有什么建议吗?

作业管理器仅返回其映射表中的字段。您还需要为clientadmin_virtualmachine表创建一个模型,并在ForeignKey中使用它。当您使用原始查询时,Django将自动将额外字段添加到本例中的模型实例中。但是,当列名重叠时,总是会出现混淆。哪个列get映射到哪个字段?为了避免这种情况,应该显式命名查询中涉及的第二个表中的所有列。大概是这样的:

job = jobs.objects.raw('select j.*, v.ip, v.id , v.name from jobs_jobs as j,clientadmin_virtualmachine as v where (j.ip_id)::int = v.id order by j.date desc')
现在,在每个作业实例中都有一个名为vid和vname的字段。您不需要为virtualmachine表创建模型


说到这里,上面的查询可以很容易地使用ORM编写,因此您可能应该避免在这里使用原始查询

我对这一点完全陌生。帮我在ORM中做这个j.ip_id::int=v.id。不,这是另一个问题。请尝试我的答案,如果它有效,请标记为正确。然后发布一个新问题。和你的模特们在一起。这是一个原始查询,询问如何将一个查询转换为另一个查询。
select j.*, v.ip, v.id as vid , v.name as vname from jobs_jobs as
  j,clientadmin_virtualmachine as v where (j.ip_id)::int = v.id 
  order by j.date desc