パイソン - Djangoは - ORMのグループ化は、サプリメントを問い合わせます

単一テーブルのクエリ:

models.py:

django.db輸入モデルから


クラス従業員(models.Model):
    名前= models.CharField(max_lengthを= 16)
    年齢= models.IntegerField()
    給与= models.IntegerField()
    州= models.CharField(MAX_LENGTH = 32)
    DEPT = models.CharField(MAX_LENGTH = 16)

    デフ__str __(自己):
        リターンself.name

    クラスメタ:
        DB_Tableの= "社員"

データemployeeテーブル:

orm.py:

輸入OS

__name__ == '__main__' の場合:
    #ロード構成情報Djangoプロジェクト
    os.environ.setdefault( "DJANGO_SETTINGS_MODULE"、 "mysite2.settings")
    #輸入ジャンゴ、とDjangoのプロジェクトを開始
    輸入ジャンゴ
    django.setup()

    app04輸入モデルから

    django.db.modelsから平均をインポート

    平均賃金は、各部門の#のために計算されます
    RET = models.Employee.objects.values( "DEPT")。注釈(平均=平均( "給料"))の値( "DEPT"、 "平均")
    プリント(右)

結果:

 

でも、テーブル、クエリ:

model.py:

django.db輸入モデルから


クラスEmployee2(models.Model):
    名前= models.CharField(max_lengthを= 16)
    年齢= models.IntegerField()
    給与= models.IntegerField()
    州= models.CharField(MAX_LENGTH = 32)
    DEPT = models.ForeignKey(= "部門" へ)

    デフ__str __(自己):
        リターンself.name

    クラスメタ:
        DB_Tableの= "employee2"


クラス部門(models.Model):
    名前= models.CharField(max_lengthを= 16、ユニーク=真)

    デフ__str __(自己):
        リターンself.name

    クラスメタ:
        DB_Tableの= "DEPT2"

DEPT2表:

employee2表:

 

orm.py:

輸入OS

__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)

运行结果:

 

おすすめ

転載: www.cnblogs.com/sch01ar/p/11324635.html