码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Django后端开发——ORM


    文章目录

    • 参考资料
    • ORM-基础字段及选项
      • 字段类型
        • 练习——添加模型类
          • 应用bookstore下的models.py
          • 数据库迁移——同步至mysql
          • mysql中查看
          • 效果
      • 字段选项
      • Meta类
        • 定义
        • 示例:改表名
          • 应用bookstore下的models.py
          • 终端
          • 效果
        • 练习——改表名+字段选项修改
          • 应用bookstore下的models.py
          • 终端
          • 效果
    • ORM基本操作
      • 常见问题汇总
      • 基础概念
      • 创建数据
        • 引入新工具——Django Shell
        • 示例
          • 方案1
            • Shell
            • 效果(在mysql中查看)
          • 方案2
            • Shell
            • 效果
        • 练习——插入数据
          • Shell(终端)
          • 效果(mysql中查看)
      • 查询数据
        • 查询简介
        • all()方法
          • 示例
          • 可定义QuerySet中的输出格式
        • values()方法
        • values.list()方法
        • order_by()
      • 练习——查看所有书籍的页面
        • bookstore/views.py
        • 分布式路由
        • bookstore/templates/bookstore/all_book.html
        • 终端
        • 效果
        • filter(条件)


    参考资料

    B站网课:点击蓝色字体跳转
    或者复制链接至浏览器访问:https://www.bilibili.com/video/BV1vK4y1o7jH?p=16&vd_source=597e21cf34ffcdce468ba00be2177e8a


    ORM-基础字段及选项

    添加字段之后要记得进行迁移,变化才能同步至数据库

    python3 manage.py makemigrations
    python3 manage.py migrate
    
    • 1
    • 2

    字段类型

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    练习——添加模型类

    在这里插入图片描述

    应用bookstore下的models.py
    class Author(models.Model):
        name = models.CharField('姓名',max_length=11,default='')
        age = models.IntegerField('年龄')
        email = models.EmailField('邮箱')
    
    • 1
    • 2
    • 3
    • 4
    数据库迁移——同步至mysql
    python3 manage.py makemigrations
    python3 manage.py migrate
    
    • 1
    • 2
    mysql中查看

    进入mysql:

    mysql -u root -p
    
    • 1

    输入密码:123456

    use mysite3;
    show tables;
    desc bookstore_author;
    
    • 1
    • 2
    • 3
    效果

    在这里插入图片描述

    字段选项

    在这里插入图片描述
    在这里插入图片描述
    null尽量不要使用
    在这里插入图片描述
    在这里插入图片描述
    修改过字段选项【添加或更改】均要执行makemigrations和migrate

    python3 manage.py makemigrations
    python3 manage.py migrate
    
    • 1
    • 2

    Meta类

    定义

    在这里插入图片描述

    示例:改表名

    更改表名

    应用bookstore下的models.py
    class Book(models.Model):
    
        title = models.CharField('书名',max_length=50,default='')
        price = models.DecimalField('价格',max_digits=7,
                                    decimal_places=2,default=0.0)
        class Meta:
            db_table='book'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    添加内容:

     class Meta:
            db_table='book'
    
    • 1
    • 2
    终端

    数据库的迁移

    python3 manage.py makemigrations
    python3 manage.py migrate
    
    • 1
    • 2
    效果

    修改表名前:
    在这里插入图片描述
    修改表名后:
    在这里插入图片描述

    练习——改表名+字段选项修改

    在这里插入图片描述

    应用bookstore下的models.py
    from django.db import models
    
    # Create your models here.
    class Book(models.Model):
    
        title = models.CharField('书名',max_length=50,default='',unique=True)
        pub = models.CharField('出版社',max_length=100,default='')
        price = models.DecimalField('价格',max_digits=7,
                                    decimal_places=2,default=0.0)
        market_price = models.DecimalField('价格', max_digits=7,
                                           decimal_places=2, default=0.0)
        class Meta:
            db_table='book'
    
    class Author(models.Model):
        name = models.CharField('姓名',max_length=11,default='')
        age = models.IntegerField('年龄',default=1)
        email = models.EmailField('邮箱',null=True)
        class Meta:
            db_table='author'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    终端

    数据库的迁移

    python3 manage.py makemigrations
    python3 manage.py migrate
    
    • 1
    • 2
    效果

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    ORM基本操作

    常见问题汇总

    在这里插入图片描述
    在这里插入图片描述
    推荐选择2:修改models.py
    在这里插入图片描述
    在这里插入图片描述

    基础概念

    在这里插入图片描述
    在这里插入图片描述

    创建数据

    在这里插入图片描述
    在这里插入图片描述
    方案2较麻烦,更推荐方案1

    引入新工具——Django Shell

    在这里插入图片描述
    代码发生变化后要重启Django Shell

    示例

    方案1
    Shell
    python3 manage.py shell
    
    • 1
    from bookstore.models import Book
    
    • 1
    b1 = Book.objects.create(title='python',pub='清华大学出版社',price=20,market_price=25)
    
    • 1
    效果(在mysql中查看)

    在这里插入图片描述

    方案2
    Shell
    python3 manage.py shell
    
    • 1
    from bookstore.models import Book
    
    • 1
    b2 = Book(title='Django',pub='清华大学出版社',price=70,market_price=75)
    b2.save()
    
    • 1
    • 2
    效果

    在这里插入图片描述

    练习——插入数据

    在这里插入图片描述
    在这里插入图片描述

    Shell(终端)

    Book:

    from bookstore.models import Book
    b3 = Book.objects.create(title='JQuery',pub='机械工业出版社',price=90,market_price=85)
    b4 = Book.objects.create(title='Linux',pub='机械工业出版社',price=80,market_price=65)
    b5 = Book.objects.create(title='HTML5',pub='清华大学出版社',price=105,market_price=90)
    
    • 1
    • 2
    • 3
    • 4

    Author:

    from bookstore.models import Author
    b1 = Author.objects.create(name='王老师',age='28',email='wangweichao@tedu.cn')
    b2 = Author.objects.create(name='吕老师',age='31',email='lvze@tedu.cn')
    b3 = Author.objects.create(name='祁老师',age='30',email='qitx@tedu.cn')
    
    • 1
    • 2
    • 3
    • 4
    效果(mysql中查看)

    在这里插入图片描述

    查询数据

    查询简介

    在这里插入图片描述

    all()方法

    在这里插入图片描述

    示例
    a1=Book.objects.all()
    a1
    for book in a1:
    ...     print(book.title)
    ... 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意:print 要有缩进
    在这里插入图片描述

    可定义QuerySet中的输出格式

    在models.py中修改
    改完要重启Shell
    在这里插入图片描述
    输入exit()可以退出Shell

    数据库的迁移:

    python3 manage.py makemigrations
    python3 manage.py migrate
    
    • 1
    • 2

    效果:
    在这里插入图片描述

    values()方法

    按字段取数据
    在这里插入图片描述

    >>> a1 = Book.objects.values('title','pub')
    >>> a1
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    values.list()方法

    在这里插入图片描述
    在这里插入图片描述

    order_by()

    在这里插入图片描述
    在这里插入图片描述
    可以进行各种组合
    在这里插入图片描述
    在这里插入图片描述
    通过query可以查看对应的SQL语句
    在这里插入图片描述

    练习——查看所有书籍的页面

    在这里插入图片描述

    bookstore/views.py

    def all_book(request):
        all_book = Book.objects.all()
        return render(request,'bookstore/all_book.html',locals())
    
    • 1
    • 2
    • 3

    分布式路由

    urls.py

    path('bookstore/',include('bookstore.urls'))
    
    • 1

    bookstore/urls.py

    path('all_book',views.all_book)
    
    • 1

    bookstore/templates/bookstore/all_book.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>查看所有书籍</title>
    </head>
    <body>
    
    <table border="1">
        <tr>
            <th>id</th>
            <th>title</th>
            <th>pub</th>
            <th>price</th>
            <th>market_price</th>
            <th>op</th>
        </tr>
        {% for book in all_book %}
        <tr>
            <td>{{ book.id }}</td>
            <td>{{ book.title }}</td>
            <td>{{ book.pub }}</td>
            <td>{{ book.price }}</td>
            <td>{{ book.market_price }}</td>
            <td>
                <a href="">更新</a>
                <a href="">删除</a>
            </td>
        </tr>
        {% endfor %}
    </table>
    
    </body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    终端

    python3 manage.py runserver
    
    • 1

    效果

    在这里插入图片描述

    filter(条件)

    在这里插入图片描述
    在这里插入图片描述


    (持续更新中)

  • 相关阅读:
    普中51单片机学习(AD转换)
    MHA高可用配置及故障切换
    Leetcode—2300.咒语和药水的成功对数【中等】
    计算机、通信及信号处理领域各单位的期刊与会议分级
    DevEco Studio开发工具下载、安装(HarmonyOS开发)_For Mac
    遥感IDL二次开发(辐射定标)
    什么是 SSL?SSL/TLS是如何工作的?HTTP和HTTPS有什么区别?
    猿创征文 第二季|业务总结 #「笔耕不辍」--生命不息,写作不止#
    LeetCode 907
    学习笔记|串口通信实战|简易串口控制器|sprintf函数|STC32G单片机视频开发教程(冲哥)|第二十一集(下):串口与PC通信
  • 原文地址:https://blog.csdn.net/m0_73927795/article/details/136178785
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号