2010-04-30 32 views
0

不同型號比方說,我有這樣的數據模型:加入在Django

class Workflow(models.Model): 
    ... 

class Command(models.Model): 
    workflow = models.ForeignKey(Workflow) 
    ... 

class Job(models.Model): 
    command = models.ForeignKey(Command) 
    ... 

假設地方我想遍歷所有工作流程的對象,併爲每個工作流程我通過它的命令要循環,併爲每個我想循環執行每個作業的命令。有沒有一種方法來構建一個單一的查詢?

也就是說,我想Workflow.objects.all()加入到它的依賴模型中,所以我得到一個已經緩存了依賴對象的集合,所以工作流[0] .command_set.get()不會產生額外的查詢。

這可能嗎?

回答

1

周圍的其他方式很簡單,因爲你可以做

all_jobs = Job.objects.select_related().all() 

而且任何job.command或job.command.workflow不會產生額外的查詢。

不確定工作流查詢是否可能。

0

我認爲唯一的辦法就是使用django.db.connection並編寫自己的查詢。

因爲這將迭代Job的所有實例(您的ForeignKeys未設置爲空),無論如何,您可以選擇所有Job的,然後將它們在ORM之外分組