双下划线多表查询

Posted fushaunglin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双下划线多表查询相关的知识,希望对你有一定的参考价值。

1基于双下划线的跨表查询
套路一样,用__跨表
-一对多
-多对多
2 聚合查询
-聚合函数
from django.db.models import Avg,Count,Max,Min,Sum
# 计算所有图书的平均价格
# ret=Book.objects.all().aggregate(Avg(‘price‘))
# print(ret)


3分组查询
终极总结:
values在前,表示group by,在后,表示取值
filter在前,表示过滤(where),在后,表示having(对分组之后的结果再进行过滤)
4 F查询与Q查询

-F为了字段=后面的值,不能放字段,所以用F函数包裹一下就可以了
-Q为了构造与&,或|,非~的关系

5 常用字段:必须记住,非常用字段,了解即可
6 orm字段参数:
-null 可以为空
-unique 唯一性约束
-default 默认值
-db_index 为该字段建索引
-只给日期类型和时间类型用
-auto_now_add 新增数据时,默认把当前时间存入
-auto_now 修改的时候,默认把当前时间存入
7 关系字段
ForeignKey
-to 关联哪个表
-to_field 关联的字段
-related_name 反向操作时,使用的字段名,用于代替原反向查询时的‘表名_set‘。(一般不要用)
-related_query_name :基于双下划线的反向查询之前按表名小写(一般不要用)
-on_delete:models.CASCADE,models.SET_NULL
-db_constraint:db_constraint=False代表,不做外键关联




































以上是关于双下划线多表查询的主要内容,如果未能解决你的问题,请参考以下文章

python-day71--django多表双下划线查询及分组聚合

Django-orm:单表查询基于对象和双下划线的多表操作集合查询分组查询F查询和Q查询

ORM多表查询下

28.多表查询——跨关联关系的多表查询

28.多表查询——跨关联关系的多表查询

多表操作