博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORM 关键
阅读量:5933 次
发布时间:2019-06-19

本文共 3313 字,大约阅读时间需要 11 分钟。

1. 老师的增删改查        1. teacher_obj.cid.add(*[1, 2, 3])   添加(必须打散)        2. teacher_obj.cid.set([1, 2, 3])    设置(不用打散)            2. 查询练习        1. 单表查询  只在一张表里查各种字段            obj.属性(字段)        2. 一对多(外键)和一对一            正向:                从写外键或一对一的表开始查 叫 正向查                obj.外键(一对一).属性            反向查:                1. 一对多                    obj.表名_set                2. 一对一                    obj.表名                3. 多对多                    正向查:                从写多对多的表开始查 叫 正向查                obj.多对多字段名.all() --> QuerySet()            反向查:                obj.表名_set.all()     --> QuerySet()                                4. 双下划线 表示跨表查询            正向:                1. 关联的字段名__另外一张表的字段名            反向:                1. 另外一张表的表名__另外一张表的字段名                        5. 聚合            aggregate()                        from django.db.models import Avg, Max, Min, Count, Sum                        # 求最贵的那本书            models.Book.objects.all().aggregate(max_price=Max("price"))                6. 分组        annotate()                    # 将所有的书按作者分组,统计每个作者最贵的书            models.Author.objects.all().annotate(author_max=Max("books__price"))            最后得到的是一个QuerySet()对象,里面的每个数据对象都多了一个author_max字段                7. F             查询条件是字段间的比较                        查询所有购买数大于收藏数的商品            models.Goods.objects.filter(buy_num__gt=F("keep_num"))                        扩展的两个:                1. 将每个商品的购买数+1000                    models.Goods.objects.all().update(buy_num=F("buy_num")+1000)                2. 将所有商品的名字前面加上 “特价”                    from django.db.models.functions import Concat                    from django.db.models import Value                                        models.Goods.objects.filter().update(name=Concat(Value("特价"), F("name")))                            8. Q            相当于取出子集和                        Q(条件1) | Q(条件2)            Q(条件1) & Q(条件2)            Q(条件1) & ~Q(条件2)                            当Q查询和关键字查询都有的时候,Q查询要写在前面            models.Book.objects.filter(Q(title__contains="物语")|Q(publish_day__year=2017),price__lt=9)                                9. 常用字段                    10. 字段参数            null            max_length            default            unique            primary_key                        时间字段相关:                auto_now_add  创建这条数据时自动加当前时间                auto_now      每一次修改都更新时间                        关系字段:                related_name                to                to_field                11. 所有QuerySet方法                        1. select_realated(关系字段)                 一对一或多对一查询时用这个                        2. prefetch_realated()                多对多和一对多时用这个            3. 批量创建                            提前把数据对象生成,                data = [obj1, obj2, obj3]                bulk_create(data, 10)            4. 执行额外SQL语句                Entry.objects.extra(select={
'new_id': "select col from sometable where othercol > %s"}, select_params=(1,)) 5. 直接执行原生SQL(和pymysql类似) 拿到连接,获取光标,执行SQL语句 from django.db import connection, connections cursor = connection.cursor() # cursor = connections['default'].cursor() cursor.execute("""SELECT * from auth_user where id = %s""", [1]) row = cursor.fetchone()

 

转载于:https://www.cnblogs.com/jassin-du/p/8352851.html

你可能感兴趣的文章
jquery 怎么触发select的change事件
查看>>
angularjs指令(二)
查看>>
(原創) 如何建立一个thread? (OS) (Linux) (C/C++) (C)
查看>>
<气场>读书笔记
查看>>
vue-cli创建的项目,如何让键盘监听事件,只在一个页面(url)内有效,如下图和代码...
查看>>
实现一个平行四边形
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
web安全问题分析与防御总结
查看>>
React 组件通信之 React context
查看>>
ZooKeeper 可视化监控 zkui
查看>>
Linux下通过配置Crontab实现进程守护
查看>>
ios 打包上传Appstore 时报的错误 90101 90149
查看>>
Oracle推出轻量级Java微服务框架Helidon
查看>>
密码概述
查看>>
程序员初入公司:10大经验让你能力提升20倍!
查看>>
nagios+nrpe监控配置错误日志集
查看>>
Hyper-V、SCVMM2012和XenDesktop 5.6桌面虚拟化运维之更新、添加和删除虚拟桌面
查看>>
Wireless在域里面实施WPA认证设定应用
查看>>
[20161020]bbed保存执行结果.txt
查看>>
linux exec和文件描述符妙用技巧(转)
查看>>