我想显示该公司中所有公司的用户数。我正在使用用户内置模型。
UserProfile模型
+----------+----------+
| NoOfSpec | OtherCol |
+----------+----------+
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | G |
| 5 | H |
+----------+----------+
公司型号
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
user_company = models.ForeignKey(Company, on_delete=models.CASCADE)
查看以显示公司
class Company(models.Model):
company_name = models.CharField(max_length=20, unique=True)
company_description = models.CharField(max_length=100)
在单个模板中显示每个公司的用户数
答案 0 :(得分:1)
首先,我将在@Input() article: any = {};
字段中添加一个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