【发布时间】:2017-07-10 21:55:20
【问题描述】:
鉴于这些 Django 模型:
class Job(models.Model):
pass
class Task(models.Model):
job = models.ForeignKey('Job', related_name='tasks')
status = models.CharField(choices=TaskStatus.CHOICES, max_length=30)
dependencies = models.ManyToManyField("self", related_name="dependents", symmetrical=False)
我想查询状态为 PENDING 的所有任务和 状态为 COMPLETED 的所有依赖项以获取单个作业。
我编写了以下查询,但它返回的任务至少有一个状态为已完成的依赖项,这显然不是我想要的。
tasks_that_can_be_executed = Task.objects.filter(
job__pk=job_id,
status=TaskStatus.PENDING,
dependencies__status=TaskStatus.COMPLETED
)
有什么建议吗?
【问题讨论】:
-
状态栏在哪里?
-
@PiyushS.Wanare 添加了它。对不起,我在为这个例子剥离不相关的代码时一定错过了它。
-
为什么都在使用
Q我不知道它主要在我们需要处理条件时使用?和过滤器始终使用AND