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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是对这段代码的注释: ```python import os import sys if __name__ == "__main__": # 设置Django项目的配置文件 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_auth_example.settings") try: # 执行命令行 from django.core.management import execute_from_command_line except ImportError: # 上述import可能因其他原因失败,因此必须确认问题是Django缺失而不是其他异常(仅适用于Python 2) try: import django except ImportError: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" ) raise # 执行命令行参数 execute_from_command_line(sys.argv) ``` 这段代码是Django项目的入口文件,主要用于执行命令行操作。具体注释如下: 1. `import os` 和 `import sys`:导入Python标准库中的`os`和`sys`模块。 2. `if __name__ == "__main__":`:判断当前文件是否作为主程序运行。 3. `os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_auth_example.settings")`:设置Django项目的配置文件,即`settings.py`文件。 4. `from django.core.management import execute_from_command_line`:导入Django核心模块`django.core.management`中的`execute_from_command_line`函数,用于执行命令行操作。 5. `except ImportError:`:捕获`ImportError`异常。 6. `try: import django` 和 `except ImportError: raise ImportError(...)`:尝试导入`django`模块,如果导入失败则抛出`ImportError`异常。 7. `raise`:抛出异常。 8. `execute_from_command_line(sys.argv)`:执行命令行参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值