Вопрос:
Я новичок в Django. Я хотел бы подсчитать и отобразить количество объектов, удовлетворяющих условию в шаблоне.
У меня есть модель пользователя и модель аккаунта. У пользователей есть учетная запись поля foreignkey, которая сопоставляется с объектом Account.
В шаблоне я хотел бы подсчитать количество пользователей для каждой учетной записи.
Самое близкое, что у меня есть, это:
{% for account in accounts %} {% for user in users %} {% if equal user.account.id account.id %} {{ user.count }} {% endif %} {% endfor %} {% endfor %}
Спасибо
Лучший ответ:
Из вашего шаблона кажется, что поле пользователя определено примерно так:
class User(models.Model): . . account=models.Foreignkey() .
Если это что-то подобное, вы можете следовать this.
{% for account in accounts %} Count: {{ account.user_set.count }} {% for user in account.user_set.all %} {{ user }} {% endfor %} {% endfor %} Ответ №1
Вы можете аннотировать свои учетные записи с подсчетом пользователя в представлении. Предполагая, что модель пользователя содержит account = ForeignKey(Account, related_name=’users’):
accounts = Account.objects.annotate(user_count=models.Count(‘users’))
Таким образом вам понадобится только один запрос. Затем просто используйте в своем шаблоне следующее:
{% for account in accounts %} {{ account.user_count }} {% endfor %}