Django 模型层及ORM介绍二
创始人
2024-05-26 22:47:57
0

数据库迁移文件混乱的解决方法

数据库中django_migrations表记录了migrate的‘全过程’,项目各应用中的migrate文件与之对应,否则migrate会报错

解决方案:

1、删除所有migrations里所有的000?_xxxx.py(__init__.py除外) 2、删除数据库。 3、重新创建数据库 4、重新生成migrations里所有的000?_xxxx.py python3 manage.py makemigrations 5、重新更新数据库 python3 manage.py migrate

ORM-操作-创建(插入)数据

ORM CRUD核心 -> 模型类.管理器对象 管理器对象 每个继承自models.Model的模型类,都会有一个objects对象被同样继承下来。 Django ORM使用一种直观的方式把数据库表中的数据表示成python对象 创建数据中每一条记录就是创建一个数据对象 方案1 MyModel.objects.create(属性1=值1,属性2=值1,...)——属性即字段 成功:返回创建好的实体对象 失败:抛出异常 代码示例 方案2 创建MyModel实例对象,并调用save()进行保存 obj = MyModel(属性=值,属性=值)——属性即字段 obj.属性=值 obj.save() Django Shell

ORM—查询数据操作

更多案例参考官方文档:https://docs.djangoproject.com/zh-hans/2.2/ref/models/querysets/#field-lookups all()方法——输出所有字段值 案例1: 案例2:格式化输出 可以在模型类中定义__str__方法,自定义QuerySet中的输出格式 例如 在Book模型类下定义如下: 则在Django shell中可得到如下显示输出 案例3:values('列1','列2'..)——输出指定字段 案例4:values_list('列1','列2'...) 案例5:order_by()——排序 组合排序 转换SQL语句 练习1: 1、在应用下创建视图函数 2、创建HTML文件生成表格,并引入模型类数据 3、在主路由进行路由分发 4、在应用下创建子路由文件 5、最后查看

条件查询-方法

filter(条件)——过滤筛选 filter案例 当多个属性在一起时为"与"关系
exclude(条件)——取非 排除掉清华大学出版社 get(条件) 异常案例:出现多条结果 异常案例:查询不到数据 正常显示:一条数据

非等值查询

查询谓词 查询id大于3的数据 转换成SQL语句

更新数据

更新单个数据 案例:修改id为1,price字段的值 批量更新数据 练习2-制作更新书籍的页面 点击“查看所有书籍”页面中的‘更新’进入更新页面

视图函数update_book

url http://127.0.0.1:8000/bookstore/update_book/ 更新页中显示当前书籍信息,且能对定价和零售价进行修改 views.py
def update_book(request,book_id):#bookstore/update_book/1try:book = Book.objects.get(id=book_id)except Exception as e:print('--update book error is %s'%(e))return HttpResponse('--The book is not exitsted')if request.method == 'GET':return render(request,'bookstore/update_book.html',locals())elif request.method == 'POST':price = request.POST['price']market_price = request.POST['market_price']#改book.price = pricebook.market_price = market_price#保存book.save()return HttpResponseRedirect('/bookstore/all_book')
update_book.html
{ book.id }}" method="post">

title { book.title }}" disabled="disabled">

pub { book.pub }}" disabled="disabled">

price { book.price }}">

market_price { book.market_price }}">


单个数据删除

删除单个案例: 批量删除 伪删除 练习3-制作“删除书籍”的页面 views.py  

F对象和Q对象

F对象 一个F对象代表数据库中的某条记录的字段的信息。 作用: 通常是对数据库中的字段值在不获取的情况下进行操作 用于类属性(字段)之间的比较 语法: 案例-查询零售价大于定价的书籍 案例2-比较 结论:传统的方法需要取出值才能比较,F对象则省略取值步骤直接比较,效率高。 Q对象 当在获取查询结果集 使用复杂的逻辑或 |、逻辑非~  等操作时可以借助与Q对象进行操作。  作用  在条件中用来实现除and(&)以外的or(|)或not(~)操作 案例: 总结 F对象——标记字段 Q对象——或与非

聚合查询和原生数据库操作

ROM聚合查询 聚合查询是指对一个数据表中的一个字段的数据进行部分或者全部进行统计查询,查bookstore_book数据表中的全部书的平均价格,查询所有书的总个数等,都要使用聚合查询。 聚合查询分为: 整表聚合 不带分组的聚合查询是指导将全部数据进行集中统计查询     分组聚合 分组聚合是通过计算查询结果中每一个对象所关联的对象集合,从而得出总计值(也可以是平均值或总和),即为查询集的每一项生成聚合。 通过返回结果的QuerySet.annotate方法分组聚合得到分组结果 QuerySet.annotate(别名=聚合函数('列名'))

原生数据库操作

SQL注入 使用原生语句时小心SQL注入 定义:用户通过数据上传,将恶意SQL语句提交给服务器,从而达到攻击效果 SQL注入防范 原生数据库操作-cursor 完全跨过模型类操作数据库-查询/更新/删除 1、导入cursor所在的包 from django.db import connection 2、用创建cursor类的构造函数创建cursor对象,在使用cursor对象。 3、为保证再出现异常时能释放cursor资源,通常使用with语句进行创建操作 示例

相关内容

热门资讯

iOSapp移植到安卓系统,i... 你有没有想过,那些在iOS上让你爱不释手的app,是不是也能在安卓系统上大放异彩呢?今天,就让我带你...
现在安卓随便换系统,探索个性化... 你知道吗?现在安卓手机换系统简直就像换衣服一样简单!没错,就是那种随时随地、随心所欲的感觉。今天,就...
安卓系统安装按钮灰色,探究原因... 最近发现了一个让人头疼的小问题,那就是安卓手机的安装按钮突然变成了灰色,这可真是让人摸不着头脑。你知...
安卓7.1.1操作系统,系统特... 你知道吗?最近我在手机上发现了一个超级酷的新玩意儿——安卓7.1.1操作系统!这可不是什么小打小闹的...
安卓os系统怎么设置,并使用`... 你有没有发现,你的安卓手机有时候就像一个不听话的小孩子,有时候设置起来真是让人头疼呢?别急,今天就来...
安卓降低系统版本5.1,探索安... 你知道吗?最近安卓系统又来了一次大动作,竟然把系统版本给降到了5.1!这可真是让人有点摸不着头脑,不...
解放安卓系统被保护,解放安卓系... 你有没有想过,你的安卓手机其实可以更加自由地呼吸呢?是的,你没听错,我说的就是解放安卓系统被保护的束...
校务帮安卓系统下载,便捷校园生... 你有没有想过,你的手机里装了一个神奇的助手——校务帮安卓系统下载?没错,就是那个能让你轻松管理学校事...
安卓系统没有拼多多,拼多多崛起... 你知道吗?最近我在手机上发现了一个小小的秘密,那就是安卓系统里竟然没有拼多多这个应用!这可真是让我大...
甜城麻将安卓系统,解锁全新麻将... 你有没有听说过那个超级火的甜城麻将安卓系统?没错,就是那个让无数麻将爱好者为之疯狂的软件!今天,就让...
安卓系统卸载的软件,深度揭秘卸... 手机里的软件越来越多,是不是感觉内存不够用了?别急,今天就来教你怎么在安卓系统里卸载那些不再需要的软...
安卓系统推荐好游戏,畅享指尖乐... 手机里的游戏可是咱们休闲娱乐的好伙伴,尤其是安卓系统的用户,选择面那可是相当广呢!今天,就让我来给你...
王者安卓系统怎么卖,揭秘如何轻... 你有没有听说最近王者安卓系统的火爆程度?没错,就是那个让无数玩家沉迷其中的王者荣耀!今天,我就来给你...
安卓开发系统内置证书,基于安卓... 你有没有想过,你的安卓手机里那些神秘的内置证书,它们到底是个啥玩意儿?别急,今天就来给你揭秘这些隐藏...
荣耀安装安卓原生系统,深度体验... 你知道吗?最近荣耀手机界可是掀起了一股热潮,那就是——荣耀安装安卓原生系统!这可不是什么小打小闹,而...
安卓13小米系统,创新功能与流... 你知道吗?最近安卓13系统可谓是风头无两,各大手机厂商纷纷推出自家的新版系统,其中小米的安卓13系统...
鸿蒙系统底层安卓10,融合与创... 你知道吗?最近手机圈里可是热闹非凡呢!华为的新操作系统鸿蒙系统,竟然在底层采用了安卓10的架构。这可...
安卓系统辅助在哪关闭,轻松关闭... 你有没有发现,安卓系统的辅助功能真是贴心到不行啊!不过,有时候这些功能太多,用起来有点乱糟糟的。别急...
安卓系统outlook邮件设置... 你有没有发现,自从你把手机升级到了安卓系统,邮件管理变得有点复杂呢?别急,今天就来手把手教你如何设置...
安卓系统停止向华为,自主操作系... 你知道吗?最近科技圈可是炸开了锅!安卓系统突然宣布停止向华为提供技术支持,这可不仅仅是两家公司之间的...