-
数据库类型:varchar
-
注意: 必须要指定max_length参数值
-
DateField()
-
数据库类型:date
-
作用:表示日期
-
参数:
-
auto_now:每次保存对象时,自动设置该字段为当前时间(取值:True / False)
-
auto_now_add:当对象第一次被创建时自动设置当前时间(取值:True / False)
-
default:设置当前时间(取值:字符串格式时间,如:‘2019-6-1’)
-
以上三个参数只能多选一
-
DateTimeField()
-
数据库类型:datetime(6)
-
作用:表示日期和时间
-
参数同DateField
-
FloatField()
-
数据库类型:double
-
Django、数据库中都是用小数表示值
-
DecimalField()
-
数据库类型:decimal(x,y)
-
Django、数据库中都是用小数表示值
-
参数:
-
max_digits:位数总数,包括小数点后的位数。该数值必须大于等于decimal_places
-
decimal_places:小数点后的数字量数
-
EmailField()
-
数据库类型:varchar
-
Django、数据库中都是用字符串表示值
-
IntegerField()
-
数据库类型:int
-
Django、数据库中都是用整数表示值
-
ImageField()
-
数据库类型:varchar(100)
-
作用:在数据库中为了保存图片的路径
-
Django、数据库中都是用字符串表示值
-
TextField()
-
数据库类型:longtext
-
作用:表示不定长的字符数据
-
官方文档
https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-types
在bookstore/models.py应用中,添加一个模型类
-
Author - 作者
-
name CharField 姓名 长度最大11
-
age IntegerField 年龄
-
email EmailField 邮箱
-
代码:
class Author(models.Model):
name = models.CharField(“姓名”, max_length=11)
age = models.IntegerField(“年龄”)
email = models.EmailField(“邮箱”)
- 迁移:
-
字段选项,指定创建的列的额外的信息
-
允许出现多个字段选项,多个选项之间使用
,
隔开 -
primary_key:如果设置为True,表示该列为主键,如果指定一个字段为逐渐,则此数据表不会创建id字段。
-
blank:设置为True时,字段可以为空。设置为False时,字段是必须填写的。
-
null:如果设置True,表示该列值允许为空。默认为False,如果此选项为False,建议加入default选项来设置默认值。
-
default:设置所在列的默认值,如果字段选项null=False,建议添加此项。
-
db_index:如果设置为True,表示为该列增加索引。
-
unique:如果设置为True,表示该字段在数据库中的值必须是唯一(不能重复出现)。
-
db_column:指定列的名称,如果不指定的话则采用属性名作为列名。
-
verbose_name:设置此字段在admin界面上的显示名称
创建一个属性,表示用户长度,长度30个字符,必须是唯一的,不能为空,添加索引
name = models.CharField(max_length=30, unique=True, null=False, db_index=True)
官方文档:
https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-options
修改过字段选项、添加或更改均要执行makemigrations和migrate
使用内部Meta类,来给模型赋予属性,Meta类下面有很多内建的类属性,可以对模型类做一些控制:
示例:
file : bookstore/models.py
from django.db import modele
class Book(models.Model):
title = models.CharField(“书名”, max_length=50, default=‘’)
price = models.DecimalField(“定价”, max_digits=7, decimal_places=2, default=0.0)
info = models.CharField(“信息”, max_length=100, default=‘’)
class Meta:
db_table = ‘book’ # 可改变当前模型类对应的表名
迁移后:
表名变成了book
练习:
class Book(models.Model):
title = models.CharField(“书名”, max_length=50, default=‘’, unique=True)
pub = models.CharField(“出版社”, max_length=100, default=‘’, null=False)
price = models.DecimalField(“价格”, max_digits=7, decimal_places=2)
marker_price = models.Dec