2009-07-31 11 views
2

Ich habe ein wenig zu kämpfen, um herauszufinden, wie Sie die Beziehung und zählen Felder von Objekten.Zählen und Filtern von Objekten in einer Datenbank mit Django

In meiner Django-Website habe ich ein Profilmodell:

user = models.ForeignKey(User, unique=True) 
name = models.CharField(_('name'), null=True, blank=True) 
about = models.TextField(_('about'), null=True, blank=True) 
location = models.CharField(_('location'), null=True, blank=True) 
website = models.URLField(_('website'), null=True, blank=True) 

Mein Verständnis ist, dass dies den Benutzernamen als Fremdschlüssel verwendet wird.

Ich möchte die Anzahl der ausgefüllten Profile, die meine Benutzer ausgefüllt haben, und die, die ein bestimmtes "Element/Feld" haben, zählen und anzeigen lassen? (Name) * ausgefüllt. Ich habe versucht:

Profile.objects.all().count() 

Das gab mir die gleiche Anzahl von Profilen, wie Benutzer, die ich raten bin, ist, weil das Profilmodell für jeden Benutzer vorhanden ist, auch wenn es leer ist.

Ich bin mir nicht sicher, wie man Profile zählt, in denen eines dieser Felder ausgefüllt ist, und ich bin mir auch nicht sicher, wie man die Anzahl der vervollständigten "Name" -Felder zählt.

Ich habe versucht:

Profile.objects.all().name.count() 

Django einige gute docs auf queryset api hat, aber seine Zeit ein wenig über meinen Kopf

  • bitte meine Verwendung falscher Terminologie entschuldigen würde.

Antwort

1

sollten Sie in der Lage sein, sie zu erhalten, mit:

Profile.objects.filter(name__isnull=False) 
Verwandte Themen