假设我有这个数据模型:
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()不会生成额外的查询。
这可能吗?
答案 0 :(得分:1)
另一种方法是,因为你可以做到
all_jobs = Job.objects.select_related().all()
任何job.command或job.command.workflow都不会产生额外的查询。
不确定是否可以使用工作流查询。
答案 1 :(得分:0)
我认为你能做到的唯一方法就是使用django.db.connection
并编写自己的查询。
由于这将迭代Job的所有实例(您的ForeignKeys未设置为null),您可以选择所有Job,然后将它们分组到ORM之外