Подсчет и фильтрация объектов в базе данных с помощью Django - PullRequest
2 голосов
/ 01 августа 2009

Я немного изо всех сил пытаюсь понять, как следить за отношениями и считать поля объектов.

На моем сайте Django есть модель профиля:

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)

Насколько я понимаю, это использует имя пользователя в качестве внешнего ключа.

Я хотел бы иметь возможность подсчитывать и отображать количество заполненных профилей, заполненных моими пользователями, и те, которые имеют определенный элемент / поле? (имя) * заполнено. Я попробовал:

Profile.objects.all().count()

Это дало мне такое же количество профилей, что и у пользователей, что, я думаю, объясняется тем, что модель профиля существует для каждого пользователя, даже если она пустая.

Я не уверен, как считать профили, в которых заполнено одно из этих полей, и я также не уверен, как подсчитать количество заполненных полей «имя», которые были заполнены.

Я пытался:

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

У Django есть несколько хороших документов по queryset api , но в данный момент он у меня немного над головой

  • извините за неправильное использование терминологии.

1 Ответ

1 голос
/ 01 августа 2009

Вы должны быть в состоянии получить их, используя:

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