在其他表中显示外键计数

时间:2018-12-27 14:27:31

标签: django django-models django-forms django-templates django-views

我想显示该公司中所有公司的用户数。我正在使用用户内置模型。

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)

在单个模板中显示每个公司的用户数

1 个答案:

答案 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