标签:加载 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)
运行结果:

标签:加载 src __name__ 分组查询 com import object value ==
原文地址:https://www.cnblogs.com/sch01ar/p/11324635.html