码迷,mamicode.com
首页 > 编程语言 > 详细

Python - Django - ORM 分组查询补充

时间:2019-08-09 01:32:34      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:加载   src   __name__   分组查询   com   import   object   value   ==   

单表查询:

models.py:

from django.db import models


class Employee(models.Model):
    name = models.CharField(max_length=16)
    age = models.IntegerField()
    salary = models.IntegerField()
    province = models.CharField(max_length=32)
    dept = models.CharField(max_length=16)

    def __str__(self):
        return self.name

    class Meta:
        db_table = "employee"

employee 表中数据:

技术图片

orm.py:

import os

if __name__ == ‘__main__‘:
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app04 import models

    from django.db.models import Avg

    # 计算每个部门的平均工资
    ret = models.Employee.objects.values("dept").annotate(avg=Avg("salary")).values("dept", "avg")
    print(ret)

运行结果:

技术图片

 

连表查询:

model.py:

from django.db import models


class Employee2(models.Model):
    name = models.CharField(max_length=16)
    age = models.IntegerField()
    salary = models.IntegerField()
    province = models.CharField(max_length=32)
    dept = models.ForeignKey(to="Dept")

    def __str__(self):
        return self.name

    class Meta:
        db_table = "employee2"


class Dept(models.Model):
    name = models.CharField(max_length=16, unique=True)

    def __str__(self):
        return self.name

    class Meta:
        db_table = "dept2"

dept2 表:

技术图片

employee2 表:

技术图片

 

orm.py:

import os

if __name__ == ‘__main__‘:
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app04 import models

    from django.db.models import Avg

    # 连表查询计算每个部门的平均工资
    ret = models.Employee2.objects.values("dept_id").annotate(avg=Avg("salary")).values("dept__name","avg")  # 一个双下划线表示跨一张表查询
    print(ret)

运行结果:

技术图片

 

Python - Django - ORM 分组查询补充

标签:加载   src   __name__   分组查询   com   import   object   value   ==   

原文地址:https://www.cnblogs.com/sch01ar/p/11324635.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!