在Django中加入不同的模型

时间:2010-04-30 17:56:44

标签: python django django-models

假设我有这个数据模型:

class Workflow(models.Model):
  ...

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

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

假设某个地方我想循环遍历所有Workflow对象,并且对于我想循环遍历其命令的每个工作流,以及我希望遍历每个Job的每个Command。有没有办法用一个查询来构建它?

也就是说,我希望Workflow.objects.all()加入其依赖模型,因此我得到一个已经缓存了依赖对象的集合,因此工作流[0] .command_set.get()不会生成额外的查询。

这可能吗?

2 个答案:

答案 0 :(得分:1)

另一种方法是,因为你可以做到

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

任何job.command或job.command.workflow都不会产生额外的查询。

不确定是否可以使用工作流查询。

答案 1 :(得分:0)

我认为你能做到的唯一方法就是使用django.db.connection并编写自己的查询。

由于这将迭代Job的所有实例(您的ForeignKeys未设置为null),您可以选择所有Job,然后将它们分组到ORM之外