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

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

  • 模板语言

    • {% for line in press %}

    • {% if 条件 %}

    • {% 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
posted @ 2018-11-06 15:42  云丛  阅读(209)  评论(0编辑  收藏  举报