相关疑难解决方法(0)

Django从注释计数中排除

我有以下申请:

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()
Run Code Online (Sandbox Code Playgroud)

我想用已完成作业的数量来注释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'))
# >>> []
Run Code Online (Sandbox Code Playgroud)

最后一个查询的结果为空.如何从反向关系中排除元素?

Django 1.8,python 2.7

UPD.我希望查询集中的所有工作人员,即使是那些没有工作的人

python django django-models django-orm

6
推荐指数
1
解决办法
2404
查看次数

标签 统计

django ×1

django-models ×1

django-orm ×1

python ×1