Python Django:从表中获取值的原始查询
在pgAdminIII中执行此查询时,它会根据查询返回两个表的结果,但在django视图中使用相同的结果时,它只从第一个表中获取结果,而忽略v.ip、v.id、v.name字段值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映射到哪个字段?为了避免这种情况,应该
有什么建议吗?作业管理器仅返回其映射表中的字段。您还需要为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