[英]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.