【学习笔记】Django-models类的使用及案例

1定义和数据库表映射的类-要求

        在应用中的models.py文件中定义class,所有需要使用ORM的class都必须是 models.Model 的子类,class中的所有属性对应表格中的字段,字段的类型都必须使用 modles.xxx 不能使用python中的类型

2字段常用参数

max_length : 规定数值的最大长度

blank : 是否允许字段为空,默认不允许

null : 在DB中控制是否保存为null, 默认为false

default : 默认值

unique : 唯一

verbose_name : 假名

3数据库的迁移

对于默认数据库,为了避免出现混乱,如果数据库中没有数据,每次迁移前可以把系统自带的sqlite3数据库和*_app下的migration文件删除。

在命令行中,生成数据迁移的语句(生成sql语句)----准备迁移

python manage.py makemigrations

在命令行中,输入数据迁移的指令-------生成相应表

python manage.py migrate

 ps : 如果迁移中出现没有变化或者报错,可以尝试强制迁移

 强制迁移命令

python manage.py makemigrations 应用名

python manage.py migrate 应用名

4查看数据库中的数据

1. 启动命令行 : python3 manage.py shell

2. 在命令行中导入对应的映射类。from 应用.models import 类名,

3. 使用 objects 属性操作数据库. objects 是 模型中实际和数据库进行交互的 Manager 类的实例化对象.

4. 查询命令

         - 类名.objects.all() 查询数据库表中的所有内容. 返回的结果是一个QuerySet类型,实际上是类列表中装这个一个一个数据对象.例:Student.objects.all()

         - 类名.objects.filter(条件),通用查找格式: 属性名 _ _ (用下面的内容) =值,常见查找方法:

                  gt : 大于

                  gte : 大于等于

                  lt : 小于

                  lte : 小于等于

                  range: 范围

                  year : 年份

                  isnull : 是否为空

         查找等于指定值的格式: 属性名 = 值

         模糊查找: 属性名 _ _ (使用下面的内容) = 值

                  exact : 精确等于

                  iexact: 不区分大小写

                  contains: 包含

                  startwith: 以..开头

                  endwith: 以…结尾 

5.增加修改数据

对象 = 类()   # 使用类实例化对象

对象.属性 = 值  # 给对应的对象的属性赋值

对象.save()  # 必须要执行保存操作,否则数据没有进入数据库

5.案例如下:

1基本工作:创建student工程,创建student_app,


2.在student_app中创建类,

3. 在setting.py的配置文件添加app的名称

4.数据库迁移

(本质是创建或修改表结构,如果表的各个字段没有变化,而仅是类中的函数变化,可以不用迁移):

a. 生成迁移, 将model层转为迁移文件migration

b. 执行迁移,将新版本的迁移文件执行,更新数据库

5. 启动命令行 : python manage.py shell

6. 在命令行中导入对应的映射类:

7.开始数据库操作:

a.添加数据:

b.查询所有学生

c.查询分数为100的学生

d.查找课程名称包含字母“p”的课程

e.查找分数低于60的学生

猜你喜欢

转载自blog.csdn.net/qq_33654685/article/details/88574967
今日推荐