【发布时间】:2015-10-29 10:03:55
【问题描述】:
我有以下申请:
from django.db import models
class Worker(models.Model):
name = models.CharField(max_length=60)
def __str__(self):
return self.name
class Job(models.Model):
worker = models.ForeignKey(Worker)
is_completed = models.BooleanField()
我想用已完成作业的计数来注释 Workers 查询。
我将尝试使用以下脚本:
from myapp.models import Worker, Job
from django.db.models import Count
w = Worker.objects.create(name='Worker1')
Job.objects.create(worker=w, is_completed=False)
Job.objects.create(worker=w, is_completed=False)
Job.objects.create(worker=w, is_completed=True)
Job.objects.create(worker=w, is_completed=True)
workers = Worker.objects.all().annotate(num_jobs=Count('job'))
workers[0].num_jobs
# >>> 4
workers = Worker.objects.all().exclude(job__is_completed=False).annotate(num_jobs=Count('job'))
# >>> []
最后一个查询的结果是空的。如何从反向关系中排除元素?
Django 1.8,python 2.7
UPD。我希望所有工作人员都在查询集中,即使是那些工作为零的工作人员
【问题讨论】:
-
this SO QA 值得一读。显然,注释所有记录并根据条件进行计数并不是那么简单
标签: python django django-models django-orm