### 连接指定数据库
参数的解析:
1.ENGINE: 引擎 django.db.backends.mysql
2.NAME :连接到的数据库名称 web.db
3.USER: 用户名称 ,通常为root
4.PASSWORD: 密码
5.HOST : 连接的主机,本机localhost/127.0.0.1/可以不写
实例如下:
model.py 的语法
字段
1) CharField() 字符串, 属性值max_length必须要写,表明字符串长度,相当于原生MySQL中的char()
2) BooleanField() 布尔值,True或者False
3) DataField() 时间,只有日期,不带时间点,例如:2018-1-1
4) DateTimeField() 时间,带时间点,例如:2018-1-1 12:00:00
5) DecimalField() 带小数点的定点数,可以用于与金融或者数字有关的字段
6) EmailField() Email类型
7) URLField() URL类型,在数据库中会转换为固定长度(200)字符串
8) FileField() 文件类型
9) IntergerField() 整型数
10) FloatField() 浮点数
11) ImageField() 图片,一般在实际应用中存放图片的地址
12) TextField() 文本
字段选项
1) null 是否允许为空,赋值True或者False,例如:name = models.Char(max_length= 10 , null = False)
2) blank 是否为空格
3) choices
4)db_column 属性名,例如:db_column = ' music_name '
5)db_index 索引,为该字段设置索引
6) default 默认值,例如:password = models.Char(max_length= 10 , defalut = '123456')
7) primary_key 主键,值为True/False,默认为False(不设置为主键)
ForeignKey、ManyToManyField 、OneToOneField
poll = models.ForeignKey(
Poll,
on_delete=models.CASCADE,
verbose_name="the related poll",
)
sites = models.ManyToManyField(Site, verbose_name="list of sites")
place = models.OneToOneField(
Place,
on_delete=models.CASCADE,
verbose_name="related place",
)
关联关系
应用场景
Django 提供了定义三种最常见的数据库关联关系的方法:多对一,多对多,一对一。
一对一:一般用于某张表的补充,比如用户基本信息是一张表,但并非每一个用户都需要有登录的权限,不需要记录用户名和密码,此时,合理的做法就是新建一张记录登录信息的表,与用户信息进行一对一的关联,可以方便的从子表查询母表信息或反向查询
多对一(外键):有很多的应用场景,比如每个员工归属于一个部门,那么就可以让员工表的部门字段与部门表进行一对多关联,可以查询到一个员工归属于哪个部门,也可反向查出某一部门有哪些员工
多对多:如很多公司,一台服务器可能会有多种用途,归属于多个产品线当中,那么服务器与产品线之间就可以做成对多对,多对多在A表添加manytomany字段或者从B表添加,效果一致
Many-to-one relationships
定义一个多对一的关联关系,使用 django.db.models.ForeignKey 类。就和其他 Field字段类型一样,只需要在你模型中添加一个值为该类的属性。
例如,如果一个 Car 模型 有一个制造者 Manufacturer --就是说一个 Manufacturer
制造许多辆车,但是每辆车都属于某个特定的制造者
可以创建一个 递归关系(一个模型与它本身有多对一的关系)
实例
from django.db import models
class Manufacturer(models.Model):