(MySQL数据库)
在 Django 中一个模型类就对应着数据库中的一张表, 对模型类的任何操作都是对数据库表的操作. 在该项目中, 我们需要对业务进行分析, 然后创建所需要的表.
注意点:
- 模型类需要定义在 models.py 模块中.
- 模型类必须继承自 models.Model 类.
- 每一个类属性和数据库表中的一个字段一一对应.
类属性后面的字段类型是由 Django 定义, 方便将字段类型映射到不同的数据库中. 例如如下代码:
goods_name = models.CharField(max_length=100)
字段名叫做 goods_name, 字段的类型为 CharField, 对应到 MySQL 数据库的字段类型就为 varchar 类型, 并且长度为100. 除了 CharField, 常用字段类型以及含义如下表所示:
字段类型 | 描述 |
---|---|
AutoField | 自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性. |
BooleanField | 布尔字段,值为True或False. |
NullBooleanField | 支持Null、True、False三种值. |
CharField(max_length=长度) | 字符串, 参数max_length表示最大字符个数.CharField必须指定max_length大小 |
TextField | 大文本字段 |
IntegerField | IntegerField 一个整数. 在Django所支持的所有数据库中,从 -2147483648 到 2147483647 范围内的值是合法的. |
DecimalField(max_digits=None, decimal_places=None) | 十进制浮点数.参数max_digits表示总位数.参数decimal_places表示小数位数. |
DateField[auto_now=False, auto_now_add=False]) | 日期. 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false.参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false.参数auto_now_add和auto_now是相互排斥的,组合将会发生错误. |
TimeField | 时间,参数同DateField |
DateTimeField | 日期时间,参数同DateField. |
FileField | 上传文件字段. |
ImageField | 继承于FileField,对上传的内容进行校验,确保是有效的图片. |
BigIntegerField | 一个64位整数, 类似于一个 IntegerField ,它的值的范围是 -9223372036854775808 到9223372036854775807之间. |
SmallIntegerField | 该字段值在 -32768 至 32767 |
表中并未解释 models.ForeignKey 字段的含义, 该字段主要用于建立外键, 表示表和表之间是一对多的关系, 例如, 商品分类和商品信息表之间就属于一对多的关系. 我们就可在商品信息模型中建立对商品分类的外键.
选项类型 | 描述 |
---|---|
null | 如果为True,表示允许为空,默认值是False. |
db_column | 字段的名称,如果未指定,则使用属性的名称. |
db_index | 若值为True, 则在表中会为此字段创建索引,默认值是False. |
default | 默认值 |
primary_key | 若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用. |
unique | 如果为True, 这个字段在表中必须有唯一值,默认值是False. |
- null.如果为True,Django 将会把数据库中空值保存为NULL。默认值是 False.
- blank. 如果为True,该字段允许为空值,默认为False。要注意,这与 null 不同。null纯粹是数据库范畴,指数据库中字段内容是否允许为空,而 blank 是表单数据输入验证范畴的。如果一个字段
blank=True,表单的验证将允许输入一个空值。如果字段的blank=False,该字段就是必填的。 - primary_key.如果为True,那么这个字段就是模型的主键。如果你没有指定任何一个字段
primary_key=True,Django 就会自动添加一个IntegerField 字段做为主键,所以除非你想覆盖默认的主键行为,否则没必要设置任何一个字段的primary_key=True。主键字段是只读的。如果你在一个已存在的对象上面更改主键的值并且保存,一个新的对象将会在原有对象之外创建出来。
下面在终端执行迁移命令:
python manage.py makemigrations
下面我们执行迁移命令, 执行对应的 SQL 语句, 在数据库中创建对应的数据库表, 执行迁移的命令如下:
python manage.py migrate
接下来就可以在Navicat中查看创建好的数据库