博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django中ORM对数据库的增删改查
阅读量:5235 次
发布时间:2019-06-14

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

Django中ORM对数据库数据的增删改查

  • 模板语言

    • {% for line in press %} {% line.name %} {% endfor %}

    • {% if 条件 %}{% else %}{% endif %}

    • {% if publisher == book.publisher %}   {% else %}   {% endif %}
  • 什么是ORM

    • ORM(对象关系映射)指用面向对象的方法处理数据库中的创建表以及数据的增删改查
  • Django中连接数据库和创建表(见上个笔记)

  • 单表的增删改查

  • 创建单表

    • UserInfo.object.create(name="lin")   UserInfo.object.create(**{"name":"lin"})
    • 在HTTP中的URL中添加参数

    • UserInfo.object.filter(id=1).delete()   #删除在UserInfo表中筛选出id为1的对象
    • 在Django中获取URL中的参数

      • request.GET    #获取一个类似于字典request.GET.get("id") #取值
  • 改对数据库进行修改时需要对数据进行保存

    • obj = UserInfo.objects.filter(id=3)[0]obj.name = "alex"       #这里改只是在Python中将数据进行更改obj.save()   #将数据库中的数据进行更改,#第二种方法UserInfo.objects.filter(id=3).update(name="alex")  #直接设定对应属性,
    • UserInfo.objects.filter(email=email)    #筛选出满足条件的对象,放在一个类似列表中,UserInfo.objects.all()         #查询所有的结果,放在一个类似列表中UserInfo.objects.get(id=1)   #查询筛选条件匹配的对象,有且只有一个,如果符合条件超过一个或者没有,就会报错
    • 查到后通过点“.”取具体的值

  • 一对多的增删改查

    • 注意在Django2.0以上的版本,外键需要手动设置级联操作

      • publisher = models.ForeignKey(to='Publisher', on_delete=models.CASCADE)  # ORM自动刚给外键字段加_id
    • 关联表

    • 5X2gAR.png

      • 需要注意参数(关联外键是,

      • Book.objects.create(title=new_title,publisher=Publisher.objects.get(id=publisher_id))Book.objects.create(title=new_title, publisher_id=publisher_id)
      • Book.objects.get(id=id).delete()
    • 改 注意改完需要保存

      • book_obj.name = "新的值"    #book_obj为对象book_obj.publisher_id = "新id"  book_obj.save()
  • 多对多查询

    • 关联表

      • book = models.ManyTOManyField(to="Book_list")
    • 相关代码

      • #author_obj是创建第三张关联表那个类的一个对象author_obj.book.all()   #查询作者关联的所有书籍author_obj.book.add(id1,id2) #给作者添加关联的书籍  等同于author_obj.book.add(*[id1,id2])author_obj.book.set([id1,id2]) #类似为将以前的删掉,重新关联现在的书籍
  • 对html错误的提示
    • 5XKOs2.png

转载于:https://www.cnblogs.com/yuncong/p/9915673.html

你可能感兴趣的文章
721. Accounts Merge
查看>>
「Unity」委托 将方法作为参数传递
查看>>
重置GNOME-TERMINAL
查看>>
redis哨兵集群、docker入门
查看>>
hihoCoder 1233 : Boxes(盒子)
查看>>
oracle中anyData数据类型的使用实例
查看>>
C++对vector里面的元素排序及取任意重叠区间
查看>>
软件测试——性能测试总结
查看>>
12.4站立会议
查看>>
Java Concurrentmodificationexception异常原因和解决方法
查看>>
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
[BZOJ 5323][Jxoi2018]游戏
查看>>
编程面试的10大算法概念汇总
查看>>
Vue
查看>>
python-三级菜单和购物车程序
查看>>
条件断点 符号断点
查看>>
VMware12 + Ubuntu16.04 虚拟磁盘扩容
查看>>
水平垂直居中
查看>>