Django-model ORM
ORM
映射关系:
表名 <-------> 类名 字段 <-------> 属性 表记录 <------->类实例对象
举例
#models.py from django.db import models class Book(models.Model): # 类名就是表名 继承models.Model id=models.AutoField(primary_key=True) #主键 自增厚在那个 title=models.CharField(max_length=32)#varchar(32) pubdate=models.DateField price=models.DecimalField(max_digits=6,decimal_places=2) publish=models.CharField(max_length=32)
#启动命令
python manage.py makemigrations
python manage.py migrate
贴个文件 感受一下用法
from django.shortcuts import render,HttpResponse,redirect # Create your views here. from app01 import models #这个需要导入 def index(request): #查询所有的书籍 #models.Book.objects 这个就是管理表的管理器 表就通过这个 . 来管理 #models.Book.objects.all() #返回值QuerySet 就是一个列表[obj1,obj2...] # 每一条记录都是一个obj对象 对象可以通过 对象. 取值 # 类似于 select * from table; booklist=models.Book.objects.all() return render(request,'index.html',{'booklist':booklist}) def add(request): if request.method=='POST': ##这里是大写呀 亲 print(request.POST) #<QueryDict: {'title': ['浅爱'], 'price': ['22'], 'publish': ['七七出版社'], 'pubdate': ['2017-09-08']}> #从request.POST里把数据取出来 title=request.POST.get('title') price=request.POST.get('price') publish=request.POST.get('publish') pubdate=request.POST.get('pubdate') #插入数据 models里的title等于request.POST里取出的数据title models.Book.objects.create(title=title,price=price,publish=publish,pubdate=pubdate) # return HttpResponse('OK') return redirect('/index/') return render(request,'add.html') def delbook(request,id): #过滤 删除之前 需要过滤 过滤出要删除的项 #models.Book.objects.filter(过滤条件) #这里有一个点 点击删除按钮 应该删除当前点击行 #那又该如何锁定当前删除行呢 models.Book.objects.filter(id=id).delete() #根据id过滤出来然后删除 return redirect('/index/') #这里 其实是刷新了一下 重定向是两次请求 def edit(request,id): ##这里有个点 除了根据id编辑当前行外 还有就是 点击编辑 弹出的编辑页面里,要带着以前的数据 #先拿到当前编辑的行 然后才可以把数据拿出来展示在编辑栏里 ##filter拿到的也是queryset [obj1,obj2] 拿到的是一个列表 通过索引 拿到的才是当前编辑的行 不是很懂 我觉得 # 通过id就可以直接拿到当前编辑的行了呀 # edit_book=models.Book.objects.filter(id=id)[0] # print(edit_book) # return render(request,'edit.html') if request.method=='POST': title = request.POST.get('title') price = request.POST.get('price') publish = request.POST.get('publish') pubdate = request.POST.get('pubdate') models.Book.objects.update(title=title, price=price, publish=publish, pubdate=pubdate) return redirect('/index/') edit_book = models.Book.objects.filter(id=id)[0] # 返回值QuerySet [obj1,] return render(request, "edit.html", {"edit_book": edit_book}) #只要渲染数据 就加第三个参数 不加 页面上怎么会有内容呢 流程还是不清晰