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
关联表
增
需要注意参数(关联外键是,
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错误的提示