设计系统表
1、创建数据库表模型--model
1.1、相关概念
数据库(MySQL)
数据库驱动(MySQLdb):用SQL语句操作数据库
模型(ORM):用编程语言操作数据库表(利用类、对象、方法来定位操作数据库表)
编程语言:python语言
1.2、相关流程
通过python语言利用数据库驱动(SQL语句)调用数据库的过程中在前面还需要一个模型(ORM)的转换过程
创建数据库表(发布会表、嘉宾表)
1、发布会表
1.1、在model层里面创建两个数据库,分别为发布会表、嘉宾表
创建完毕表之后,需要创建字段,一般每张表里面都有一个ID来进行标识;Django会默认帮忙创建一个自增的ID
1.2、定义字段类型
表名 = 定义一个类
字段名 = 在类下面定义一个变量
字段类型 = 调用model下面的字段类型
长度(数据库空间长度) = 类下面变量的定义
类型 |
说明 |
AutoField |
用于存放integer 类型的数字。 |
BooleanField |
用于存放布尔类型的数据(Ture 或False) |
CharField |
用于存放字符型的数据,需要指定长度max_length。 |
CommaSeparatedIntegerField |
用于存放用逗号隔开的integer 类型的数据。 |
DateField |
日期型,必须是“YYYY-MM-DD”格式 |
DateTimeField |
日期时间型,必须是"YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] "格式。 |
DecimalField |
小数型,用于存放小数的数字。 |
EmailField |
电子邮件类型 |
FilePathField |
文件路径类类型,FilePathFields must have either ‘allow_files‘ or ‘allow_folders‘ set to True. |
IntegerField |
用于存放integer 类型的数字。 |
BigIntegerField |
用于存放大integer 类型的数字,最大数支持:9223372036854775807 |
GenericIPAddressField |
存放IP 地址的类型,IPv4 和IPv6 地址,字符串格式。 |
NullBooleanField |
vlaue must be either None, True or False. |
PositiveIntegerField |
Positive integer |
PositiveSmallIntegerField |
Positive small integer |
SlugField |
需要定义max_length 值。 |
SmallIntegerField |
Small integer |
TextField |
用于存放文本类型的数据。 |
TimeField |
时间类型。"HH:MM[:ss[.uuuuuu]]" 格式 |
FloatField |
浮点型。用于存放浮点型数据。 |
URLField |
用于存放URL 地址 |
BinaryField |
Raw binary data |
1.3、日期(model)
在数据库每创建一条数据,自动插入创建的时间
creat_time = models.DateTimeField(auto_now=True) #创建时间(自动获取当前时间)
2、嘉宾表
2.1、外链:ForeignKey()
event = models.ForeignKey(Event) #关联发布会ID
一(发布会)对多(嘉宾表)关系,两个表之间进行;每个嘉宾关联发布会ID
2.2、联合主键(models.py)
class Meta: #在父类Guest下面创建一个子类(Meta) unique_together = (‘event‘,‘phone‘) #限制发布会和手机号
唯一性:手机号码
对象:发布会
在父类(Guest)下面创建一个子类(Meta)
3、创建并生成数据库表
3.1、需要在settings.py的INSTALLED_APPS添加sign,不然会如下图,提示:App ‘sign‘ could not be found. Is it in INSTALLED_APPS?
3.2、添加完毕3.1的操作之后,终端输入:python3 manage.py makemigrations sign,提示:HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command "pip install Pillow".
cd 到相对应python3文件下面,利用pip导入上面的pillow模块
3.3、终端输入
python3 manage.py makemigrations sign
3.4、创建数据库成功
3.5、创建的0001_initial.py文件是将models.py文件里面创建的两个数据库表转换成sqlite3类型文件
3.6、终端输入如下,生成数据库,打开SQLite Manager工具就可以看到,如图2
python3 manage.py migrate
4、生成的数据库介绍
4.1、sign_event
4.2、sign_guest
event_id:为关联到发布会表中自动生成的
5、操作数据库表(发布会)
5.1、将两张数据库表映射到admin后台展示
5.2、可直接在后台创建发布会
5.3、通过admin后台显示相对应的字段
- 创建类,并且继承相对应的方法
- 将需要展示的在list_display中填写进去(list_display不可以改)
- 将相对应的方法映射到相对应的页面
- 字段的展示顺序取决于list_display后面字段的排序
5.4、添加过滤器
6、操作数据库表(嘉宾表)
6.1、问题描述:选择的类都是类,不是具体的发布会名称(对象对应的发布会都不明确,都是Event object)
6.2、利用类下面的属性(字段)来描述类