Django-模型
2019-05-16 本文已影响0人
遇明不散
模型
什么是模型
根据数据表结构而创建出来的class
ORM
对象关系映射(Object Relational Mapping)
三大特征
- 表到类的映射
- 数据类型的映射
- 关系映射
创建和配置数据库
创建数据库-webdb
create database webdb default charset utf8 collate utf8_general_ci;
Django的数据库配置
在 settings.py
中配置数据库的信息
# 默认
DATABASES = {
'default':{
'ENGINE':'django.db.backends.sqlite3',
'NAME':os.path.join(BASE_DIR,db.sqlite3),
}
}
-
ENGINE
:指定要连接的数据库的驱动程序
连接mysql的话可以取值为django.db.backends.mysql
-
NAME
:指定要连接到的数据库的名称
连接mysql的话可以取值为:mysql数据库名
-
USER
:指定登录到数据库管理系统的用户名 -
PASSWORD
:指定登录到数据库管理系统的密码 -
HOST
:指定要连接到的主机地址
如果是本机的话:127.0.0.1
或localhost
-
PORT
:指定端口号,mysql的默认为 3306
数据库的同步操作
-
./manage.py makemigrations
将每个应用下的models.py
文件生成一个数据库的中间文件,并将中间文件保存到migrations
的目录中 -
./manage.py migrate
将每个应用下的migrations
目录中的中间文件同步到数据库中
Models的语法规范
class ClassName(models.Model):
属性=models.FIELDTYPE(FIELD_OPTIONS)
# FIELDTYPE: 字段类型
# FIELD_OPTIONS: 字段选项(字段说明)
字段类型
-
BooleanField()
编程语言中使用True
或False
来表示该列的值
数据库中使用1
或0
来表示具体的值
数据类型为:tinyint
-
CharField()
编程语言中使用字符串来表示该列的值
数据库中也是字符串
数据类型为:varchar
注意:必须要指定max_length
参数值 -
DateField()
编程语言中使用字符串或Date类型的数据表示该值
数据库中使用的是时间字符串
数据类型为:date
- DateTimeField()
数据类型为:datetime
-
DecimalField()
编程语言中使用数字(小数)来表示该列的值
数据库使用小数表示
数据类型:decimal
eg:money=models.DecimalField(max_digits=7,decimal_places=2)
-
FloatField()
编程语言中使用数字(小数)来表示该列的值
数据库使用小数
数据类型:float
-
IntegerField()
数据类型:int
-
EmailField()
编程语言中使用字符串来表示一段Email地址
数据库中使用 字符串表示
数据类型:varchar
-
URLField()
编程语言中使用字符串来表示一段网址
数据库中使用 字符串表示
数据类型:varchar
-
ImageFiled()
目的:存储图片路径
数据类型:varchar
eg:image=models.ImageField(upload_to='images/')
- 更多请查看
字段选项
-
default
为当前字段指定默认值 -
null
指定当前字段是否允许为空,默认为False,不能为空 -
db_index
指定是否为当前字段指定索引 -
db_column
指定当前属性映射到表中的类名,如果不指定则采用属性名称作为类名 - 更多请查看
相关指令
版本切换
./manage.py migrate 应用名称 版本号
通过数据库自动导出models类
./manage.py inspectdb > 文件名.py