Сначала я добавлю атрибут related_name
в поле user_company
:
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
user_company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='user_profiles')
Затем в вашем методе get_context_data
вам просто нужно annotate()
ваш набор запросов следующим образом:
def get_context_data(self, **kwargs):
context = super(CompanyListView, self).get_context_data(**kwargs)
context['companies'] = Company.objects.exclude(
company_name='Google'
).annotate(
total_users=Count('user_profiles')
)
# Count of Users
return context
Обратите внимание, что вам нужно будет импортировать функцию Count
следующим образом:
from django.db.models import Count
Затем в вашем шаблоне вы можете получить доступ к количеству пользователей, как показано ниже:
{% for company in objects %}
{{ company.total_users }}
{% endfor %}