Ich habe folgende Anwendung:Django ausschließen Anmerkung Zählung
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()
Ich möchte Arbeiter Abfrage mit der Zählung der abgeschlossenen Aufträge zu annotieren.
Ich werde versuchen, es mit folgenden Skript zu tun:
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'))
# >>> []
Ergebnis der letzten Abfrage leer ist. Wie können Elemente von der umgekehrten Beziehung ausgeschlossen werden?
Django 1.8, Python 2,7
UPD. Ich möchte alle Arbeiter in queryset haben, auch diejenigen, die
[diese SO QA] (http://stackoverflow.com/questions/2875122/django-and-conditional-aggregates) ist lesenswert. anscheinend ist es nicht so einfach, alle Datensätze zu kommentieren und basierend auf einer Bedingung zu zählen – Pynchia