Django入门学习笔记(四)--模型类

目录

一. 模型类的开

    1. 定义模型类 

    2. 生成迁移 python manage.py makemigrations

    3. 执行迁移,生成数据库表单    python manage.py migrate

二.操作模型类 

三. 模型类进阶之自定义管理器

四. 模型类进阶之查询数据

      1、查询集

      2、字段查询

      3、聚合函数

      4、 F对象

      5、Q对象


一. 模型类的开发

     1. 定义模型类

       Django入门学习笔记(四)--模型类_第1张图片

     关于模型类中各个字段的含义,可以查看django官方文档

     备注:如果models.ForeignKey不加on_delete参数,会提示以下错误:

      Django入门学习笔记(四)--模型类_第2张图片

   2. 生成迁移 python manage.py makemigrations

     在虚拟环境下切换到项目所在目录,输入以上指令:

     Django入门学习笔记(四)--模型类_第3张图片

     Django入门学习笔记(四)--模型类_第4张图片

   3. 执行迁移,生成数据库表单    python manage.py migrate

    Django入门学习笔记(四)--模型类_第5张图片

    Django入门学习笔记(四)--模型类_第6张图片 

 备注:如果更改了模型类的数据,则生成迁移和执行迁移都需要再来一次,可以将原来生成的迁移文件如0001_initial.py先删除再重新操作。

二.操作模型类 

      首先使用 python manage.py shell进入shell窗口

       1. 引入模型类下的类

          from testApp.models import BookInfo

          from testApp.models import HeroInfo

      2. 相关操作命令  

#创建对象
book =BookInfo()
#给对象赋值
book.xxx =xxx
#保存
book.save()_

#查询全部对象
BookInfo.objects.all()
#查看特定的对象
b=BookInfo.objects.get(id=x)
#更新对象内容
b.xxx =xxx
b.save()
#删除
book.remove()

#关系之一对多找对象
book.heroinfo_set.all()
#关系之多对一
hero.book

     当然最方便的是进入后台直接操作,这一点下一章再学习。    

三. 模型类进阶之自定义管理器

      django中管理器扮演的角色就是ORM,是模型类的属性,用于将对象与数据表映射。默认的管理器为objects,当自定义管理器后,系统会删除自带的objects。

      自定义管理器主要有两个作用:

      1. 更改默认查询集的结果

      2. 定义一个模型类创建的方法

       Django入门学习笔记(四)--模型类_第7张图片

四. 模型类进阶之查询数据

          在这里我们应该有这么两个疑问:为什么要查询数据?怎么查?

         为什么要查:是为了将数据库中的数据提取出来,便于我们使用。

         至于怎么查,看以下几点:

      1、查询集

                在管理器上调用过滤器方法会返回查询集;常用的过滤器有 filter(),get(),count()

                filter() ---返回符合筛选条件的数据

                get() ---返回单个满足条件的数据

                count()---返回总的个数

      2、字段查询

              语法:属性名称__比较运算符 =值(也就是类属性名称+双下划线+比较运算符=某个筛选值)

              如:filter(btitle__contains='西’) 表示筛选出名字中包含'西'字的数据。

              比较运算符有:

              exact: 表示判等,大小写敏感,可以省略不写

              contains: 是否包含,大小写敏感

              startswith,endswith: 以value开头或结尾,大小写敏感

              isnull,isnotnull: 是否为null

              注意,如果在前面加上i代表不区分大小写,如iexact

              in: 是否在范围内

              gt,gte,lt,lte: 大于,大于等于,小于,小于等于

              year,month,day,week_day,hour,minute,second: 对日期类型的属性进行运算

              还有查询的快捷方式pk,代表主键id. 如filter(pk__gt=2)

       3、聚合函数

              使用aggregate()函数返回聚合函数的值。

               函数:Avg,Count,Max,Min,Sum

       4、 F对象

               可用于一个字段和另一个字段作比较。

       5、Q对象

               实现过滤器的或运算。

               如:liest.filter(Q()|Q()

         

              

 

       

你可能感兴趣的:(Python之旅)