[英]How to use temp table count values into into the where query in Django Raw Sql?
[英]Django : Raw query fetching values from table
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')
在pgAdminIII中执行此查询时,它会根据查询从两个表中返回结果,但是当我在django视图中使用相同的结果时,它将仅从第一个表中获取结果,而忽略了v.ip,v.id和v.name字段值。
有什么建议么?
当您使用原始查询时,Django会自动将额外的字段添加到模型实例(在本例中为Job)。 但是,当列名重叠时,总是会造成混乱。 哪一列被映射到哪个字段? 为了避免这种情况,您应该显式命名查询中涉及的secondy表中的所有列。 像这样:
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
现在,您将在每个作业实例中都有一个名为vid
和vname
。 您无需为virtualmachine
表创建模型。
综上所述,上面的查询很容易使用ORM编写,因此您可能应该避免在此处进行原始查询
jobs
管理器仅返回其映射表中的字段。 您还需要为clientadmin_virtualmachine
表创建一个模型,并在ForeignKey
使用它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.