内容简介:Django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。 在Django中主要是设计类:模型类。 ORM另外一个作用:根据设计的类生成数据库中的表。在应用models.py中设计模型类。注意: 必须继承与
Django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。 在Django中主要是设计类:模型类。 ORM另外一个作用:根据设计的类生成数据库中的表。
模型类设计
在应用models.py中设计模型类。
注意: 必须继承与 models.Model 类 在应用里面
models.py的文件内容
from django.db import models # 设计和表对应的类, 模型类 # Create your models here. # 在Django里面不需要我们自己定义id主键, 会帮我们自动生成 # 图书类 class BookInfo(models.Model): """图书模型类""" # btitle: 图书名称 # charField: 说明是一个字符串 # max_length: 制定字符串最大的长度 btitle = models.CharField(max_length=20) # 出版日期 # DateField: 说明是一个日期的类型 bpub_date = models.DateField() 复制代码
模型类生成表
生成迁移文件
- 生成迁移文件
python manage.py makemigrations 复制代码
迁移文件是根据模型类生成的。
- 执行迁移生成表
根据迁移文件生成表。 生成表名的默认格式: 应用名_模型类名小写
python manage.py makemigrations 复制代码
在Django中的 settings.py 文件中,我们可以看到默认使用的是 sqlite 3数据库, 主要使用在移动端
我们查看当前有自动生成db.sqlite3这个数据库
在Mac下, 我们可以使用Navicate这个软件打开数据库
通过模型类操作数据表
进入项目 shell 的命令:
python manage.py shell 复制代码
以下为在相互shell终端中演示的例子: 首先导入模型类:
from booktest.models import BookInfo,HeroInfo # 向booktest_bookinfo表中插入一条数据。 b = BookInfo() # 定义一个BookInfo类的对象 b.btitle ='天龙八部' # 定义b对象的属性并赋值 b.bpub_date = date(1990,10,11) b.save() # 才会将数据保存进数据库 # 查询出booktest_bookinfo表中id为1的数据。 BookInfo.objects.get 这是我们的查找 b = BookInfo.objects.get(id=1) # 在上一步的基础上改变b对应图书的出版日期。需要改变的话直接赋值然后再次保存数据即可 b.bpub_date = date(1989,10,21) b.save() # 才会更新表格中的数据 # 紧接上一步,删除b对应的图书的数据。 b.delete() # 才会删除 # 向booktest_heroInfo表中插入一条数据。 h = HeroInfo() h.hname = '郭靖' h.hgender = False h.hcomment = ‘降龙十八掌’ b2 = BookInfo.objects.get(id=2) h.hbook = b2 # 给关系属性赋值,英雄对象所属的图书对象 h.save() # 查询图书表里面的所有内容。 BookInfo.objects.all() HeroInfo.objects.all() quit() # 可以退出当前shell编辑模式 复制代码
关联操作
查询出id为2的图书中所有英雄人物的信息。
b = BookInfo.objects.get(id=2) b.heroinfo_set.all() # 查询出b图书中所有英雄人物的信息 复制代码
后台管理
本地化
- 语言和时区的本地化。 修改 settings.py 文件。
- 创建管理员
python manage.py createsuperuser 复制代码
地址是: http://127.0.0.1:8000/admin
-
注册模型类 在应用下的admin.py中注册模型类。
告诉djang框架根据注册的模型类来生成对应表管理页面。
from django.contrib import admin from booktest.models import BookInfo # 后台管理相关文件 # Register your models here. # 注册模型类 admin.site.register(BookInfo) 复制代码
b = BookInfo() str(b) __str__ 复制代码
这样我们在Django的后台管理页面就可以看到这样的可以显示我们自己定义的显示内容
为了展示更多的表如下图
我们需要在admin.py去注册这个模型类,前提需要导入这个模块下的模型类
如果在界面上我们想看到更多模型的信息我们就需要自定义模型管理类, 如下图这样的界面, 在这里我遇到一个问题,就是添加书籍的时候回出现错误,最后我查一下有说是 python 3.7版本的问题,最后我就换成了3.6版本发现是可以的.
我们需要这样自定义
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 到底要不要用 ORM?ORM vs. 非 ORM 对比
- ORM 框架 sqltoy-orm 4.12.2 发版
- sqltoy-orm 4.18.3 已经发布,ORM 框架
- sqltoy-orm 4.18.4 已经发布,ORM 框架
- sqltoy-orm 4.18.7 已经发布,ORM 框架
- 优雅的 ORM 框架 sqltoy-orm-4.11.9 发版了
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beginning Apache Struts
Arnold Doray / Apress / 2006-02-20 / USD 44.99
Beginning Apache Struts will provide you a working knowledge of Apache Struts 1.2. This book is ideal for you Java programmers who have some JSP familiarity, but little or no prior experience with Ser......一起来看看 《Beginning Apache Struts》 这本书的介绍吧!