2010-04-30 31 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之外分组