• 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})  #只要渲染数据 就加第三个参数 不加 页面上怎么会有内容呢 流程还是不清晰
  • 相关阅读:
    lambda函数用法
    Appium基础篇-元素定位
    python生成测试报告
    jmeter 设置中文
    jmeter bin下常用目录
    高效求幂运算
    欧几里德算法(求最大公因数)
    二分查找
    最大子序列和问题
    秋游小记
  • 原文地址:https://www.cnblogs.com/lazyball/p/7810702.html
Copyright © 2020-2023  润新知