zoukankan      html  css  js  c++  java
  • Django中ORM对数据库的增删改查

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

    • 模板语言

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

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

      • {% if publisher == book.publisher %}
           <option selected value="{{ publisher.id }}">{{ publisher.name }}</option>
        {% else %}
           <option value="{{ publisher.id }}">{{ publisher.name }}</option>
        {% endif %}
        
    • 什么是ORM

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

    • 单表的增删改查

    • 创建单表

      • 5X27Fe.png
      • 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)   #查询筛选条件匹配的对象,有且只有一个,如果符合条件超过一个或者没有,就会报错
        
      • 查到后通过点“.”取具体的值

      • 5XsZGa.png

      • 5XslHi.png

    • 一对多的增删改查

      • 注意在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")
        • 5X737y.png
      • 相关代码

        • #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错误的提示

      • 5XKjlE.png
      • 5XKOs2.png
  • 相关阅读:
    程序设计实践读书笔记(一)
    Markdown语法和MWeb使用说明
    Comparable和Comparator的学习笔记
    WMware给centos6.8虚拟机添加硬盘
    Centos定时自动执行脚本
    linux开机关机自启动或自关闭服务的方式
    jira从windows迁移到linux
    ERROR: transport error 202:bind failed:Address already in use
    linux文件备份到windows方法
    validator验证
  • 原文地址:https://www.cnblogs.com/yuncong/p/9915673.html
Copyright © 2011-2022 走看看