我有以下两种模型:
class Company(models.Model):
name = models.CharField(max_length=100)
class User(models.Model):
ACCES_TYPE_CHOICES = (
('ADMIN', 'Admin'),
('GUEST', 'Guest')
)
company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='users')
access_type = models.CharField(max_length=5, choices=ACCES_TYPE_CHOICES)
我想要一个查询,该查询将返回每个公司access_type == GUEST
的用户数量和用户数量的值access_type == ADMIN
,如下所示:
<QuerySet [{'id': 1, 'name': 'Company name', 'admin_users': 3, 'guest_users': 1}]>
我尝试了一些带注释的方法,但找不到解决方案。
谢谢你的帮助!
您可以在表达式[Django-doc]中使用filter=…
参数Count
[Django-doc]:
from django.db.models import Count, Q
Company.objects.annotate(
admin_users=Count('users', filter=Q(access_type='ADMIN')),
guest_users=Count('users', filter=Q(access_type='GUEST'))
)
由此Company
产生的对象将具有两个额外的属性:.admin_users
和.guest_users
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句