Ich habe zwei Modelle losen wie folgt definiert:Django mit Anmerkungen versehen Zählung mit einem eindeutigen Feld
class InformationUnit(models.Model):
username = models.CharField(max_length=255)
project = models.ForeignKey('Project')
...
class Project(models.Model):
name = models.CharField(max_length=255)
jetzt in einer Ansicht, ich will alle InformationUnits mit Anmerkungen versehen, die zu einem Projekt gehören, so dass ich dies tun:
p = Project.objects.all().annotate(Count('informationunit')
die Weiterhin nur ok funktioniert, möchte ich in jedem Projekt wissen, wie viele verschiedene ‚username‘ teilnehmen. Zählen Sie, wie viele verschiedene "Benutzernamen" in den Informationseinheiten enthalten sind, aus denen ein Projekt besteht. Ich habe folgendes versucht, aber es zählt einfach die Anzahl der InformationUnit, und zwar unabhängig von dem Benutzernamen:
p = Project.objects.all().annotate(Count('informationunit__username')
Beachten Sie, dass Benutzername nicht ein Objekt ist, es ist eine Zeichenfolge. Gibt es eine saubere Möglichkeit, dies zu tun, oder sollte ich einen komplizierteren Code basierend auf Schleifen und Spaghetti-Code erstellen: P
Vielen Dank!
Es hat funktioniert! Ich hatte das irgendwo gefunden und es sogar versucht (eigentlich war es das letzte, was ich getan habe, bevor ich die Frage hier gestellt habe). Am Anfang funktionierte es nicht, aber nach dem Neustart des Entwicklungsservers versuchte es es heute wieder und es schaffte den Trick: P Vielen Dank! – fenomenoxp
Es ist dokumentiert (jetzt, jedenfalls): https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.Count.distinct –