django ormグループクエリを使用して、統合クエリに協力し、sqlのgroup by countを実現します.

1314 ワード

djangoを使用する場合、いくつかの条件の下で、統合クエリとグループクエリを使用しなければならないが、sql文を使用したくない場合は、ORMで提供する方法があります.もし次のようなsql文を実現するなら、まずcourseに対して.IDグループを作って、グループごとにuser_を確定します.idの個数
SELECT course_id,count(user_id) as usercount FROM test_bt4.course_user where is_delete = 0 group by course_id;
#       
#           
from django.db.models import Count
objs = CourseUser.objects.values('course_id').filter(is_delete=False).annotate(usercount=Count('user_id'))
print(objs)
#              
for obj in objs:
    print(obj.get('course_id'),obj.get('usercount'))