Django_study_day05:设计模型02

迁移

设计完模型以后,我们就要开始迁移文件操作了

在生成迁移文件之前,我们

迁移前目录结构如下图:

在这里插入图片描述

迁移由两步完成:

  • 1.生成迁移文件:根据模型类生成创建表的迁移文件
  • 2.执行迁移:根据第一步生成的迁移文件在数据库中创建表

生成迁移文件命令如下:

python manage.py makemigrations

在这里插入图片描述

执行生成迁移文件命令后,会在应用booktest目录下的migrations目录中生成迁移文件

生成迁移文件后的目录结构:

在这里插入图片描述

打开上图中的迁移文件,内容如下:

在这里插入图片描述

Django框架根据我们设计的模型类生成了迁移文件,在迁移文件中我们可以看到fields列表中每一个元素跟BookInfo类属性名以及属性的类型是一致的。同时我们发现多了一个id项,这一项是Django框架帮我们自动生成的,在创建表的时候id就会作为对应表的主键列,并且主键列自动增长

执行迁移命令如下:

python manage.py migrate 

在这里插入图片描述

当执行迁移命令后,Django框架会读取迁移文件自动帮我们在数据库中生成对应的表格

迁移后目录结构如下图:

在这里插入图片描述

Django默认采用sqlite3数据库,上图中的db.sqlite3就是Django框架帮我们自动生成的数据库文件。 sqlite3是一个很小的数据库,通常用在手机中,它跟mysql一样,我们也可以通过sql语句来操作它。

下面使用sqliteman打开db.sqlite3文件进行查看。如果没有安装sqliteman,需要先使用如下命令进行安装。

sudo apt-get install sqliteman

安装成功之后,在终端输入sqliteman命令,敲击回车即可打开软件。

完成迁移文件后,下面就可以通过进入项目的shell,进行简单的API操作。如果需要退出项目,可以使用ctrl+d快捷键或输入quit()。

进入项目shell的命令:

python manage.py shell

页面展示效果如下:
在这里插入图片描述

首先引入booktest/models中的类:

from booktest.models import BookInfo,HeroInfo

查询所有图书信息:

BookInfo.objects.all()

因为当前并没有数据,所以返回空列表

在这里插入图片描述

查询

新建图书对象:

b=BookInfo()
b.btitle="射雕英雄传"
from datetime import date
b.bpub_date=date(1991,1,1)
b.save()

添加

再次查询所有图书信息:

BookInfo.objects.all()

在这里插入图片描述

查找图书信息并查看值:

b=BookInfo.objects.get(id=1)
b
b.id
b.btitle
b.bpub_date

在这里插入图片描述

修改图书信息:

b.bpub_date=date(2017,1,1)
b.save()
b.bpub_date

在这里插入图片描述

删除图书信息:

b.delete()

在这里插入图片描述

对象的关联操作

对于HeroInfo可以按照上面的方式进行增删改查操作。

创建一个BookInfo对象

b=BookInfo()
b.btitle='abc'
b.bpub_date=date(2018,1,1)
b.save()

创建一个HeroInfo对象

h=HeroInfo()
h.hname='123'
h.hgender=False
h.hcomment='haha'
h.hbook=b
h.save()

图书与英雄是一对多的关系,django中提供了关联的操作方式。

b.heroinfo_set.all()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41996673/article/details/84880440
今日推荐