ORM

栏目: Python · 发布时间: 5年前

内容简介:Django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。 在Django中主要是设计类:模型类。 ORM另外一个作用:根据设计的类生成数据库中的表。在应用models.py中设计模型类。注意: 必须继承与

Django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。 在Django中主要是设计类:模型类。 ORM另外一个作用:根据设计的类生成数据库中的表。

模型类设计

在应用models.py中设计模型类。

注意: 必须继承与 models.Model 类 在应用里面

ORM

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()
复制代码

模型类生成表

生成迁移文件

  1. 生成迁移文件
python manage.py makemigrations
复制代码
ORM

迁移文件是根据模型类生成的。

ORM
  1. 执行迁移生成表

根据迁移文件生成表。 生成表名的默认格式: 应用名_模型类名小写

python manage.py makemigrations
复制代码
ORM

在Django中的 settings.py 文件中,我们可以看到默认使用的是 sqlite 3数据库, 主要使用在移动端

ORM

我们查看当前有自动生成db.sqlite3这个数据库

ORM

在Mac下, 我们可以使用Navicate这个软件打开数据库

ORM

通过模型类操作数据表

进入项目 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的图书中所有英雄人物的信息。

ORM
b = BookInfo.objects.get(id=2)
b.heroinfo_set.all()  # 查询出b图书中所有英雄人物的信息
复制代码

后台管理

本地化

  1. 语言和时区的本地化。 修改 settings.py 文件。
ORM
  1. 创建管理员
python manage.py createsuperuser
复制代码
ORM
ORM

地址是: http://127.0.0.1:8000/admin

  1. 注册模型类 在应用下的admin.py中注册模型类。

    告诉djang框架根据注册的模型类来生成对应表管理页面。

ORM
from django.contrib import admin
from booktest.models import BookInfo
# 后台管理相关文件
# Register your models here.
# 注册模型类
admin.site.register(BookInfo)
复制代码
b = BookInfo()

str(b) __str__
复制代码
ORM

这样我们在Django的后台管理页面就可以看到这样的可以显示我们自己定义的显示内容

ORM

为了展示更多的表如下图

ORM

我们需要在admin.py去注册这个模型类,前提需要导入这个模块下的模型类

ORM

如果在界面上我们想看到更多模型的信息我们就需要自定义模型管理类, 如下图这样的界面, 在这里我遇到一个问题,就是添加书籍的时候回出现错误,最后我查一下有说是 python 3.7版本的问题,最后我就换成了3.6版本发现是可以的.

ORM

我们需要这样自定义

ORM

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Linux程序设计

Linux程序设计

Neil Matthew、Richard Stones / 陈健、宋健建 / 人民邮电出版社 / 201005 / 99.00元

时至今日,Linux系统已经从一个个人作品发展为可以用于各种关键任务的成熟、高效和稳定的操作系统,因为具备跨平台、开源、支持众多应用软件和网络协议等优点,它得到了各大主流软硬件厂商的支持,也成为广大程序设计人员理想的开发平台。 本书是Linux程序设计领域的经典名著,以简单易懂、内容全面和示例丰富而受到广泛好评。中文版前两版出版后,在国内的Linux爱好者和程序员中也引起了强烈反响,这一热潮......一起来看看 《Linux程序设计》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器