単一テーブルのクエリ:
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)
运行结果: