Django后端开发——ORM


参考资料

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


ORM-基础字段及选项

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

python3 manage.py makemigrations
python3 manage.py migrate

字段类型

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

练习——添加模型类

在这里插入图片描述

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

进入mysql:

mysql -u root -p

输入密码:123456

use mysite3;
show tables;
desc bookstore_author;
效果

在这里插入图片描述

字段选项

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

python3 manage.py makemigrations
python3 manage.py migrate

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'

添加内容:

 class Meta:
        db_table='book'
终端

数据库的迁移

python3 manage.py makemigrations
python3 manage.py migrate
效果

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

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

在这里插入图片描述

应用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'
终端

数据库的迁移

python3 manage.py makemigrations
python3 manage.py migrate
效果

在这里插入图片描述

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

ORM基本操作

常见问题汇总

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

基础概念

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

创建数据

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

引入新工具——Django Shell

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

示例

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

在这里插入图片描述

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

在这里插入图片描述

练习——插入数据

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

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)

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')
效果(mysql中查看)

在这里插入图片描述

查询数据

查询简介

在这里插入图片描述

all()方法

在这里插入图片描述

示例
a1=Book.objects.all()
a1
for book in a1:
...     print(book.title)
... 

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

可定义QuerySet中的输出格式

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

数据库的迁移:

python3 manage.py makemigrations
python3 manage.py migrate

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

values()方法

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

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

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

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())

分布式路由

urls.py

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

bookstore/urls.py

path('all_book',views.all_book)

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>

终端

python3 manage.py runserver

效果

在这里插入图片描述

filter(条件)

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


(持续更新中)

  • 42
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

^_^2412

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值