# 一、 模型常用字段
# 01. models.AutoField
自增列 (
int(11)
)参数中必须填入
primary_key=True
默认情况下
Django
会为ORM
中定义的每一张表加上一个自增ID
字段,并且用这个字段来做主键。Django
默认的行为就像这样:即不主动添加此
ID
字段Django
会自动添加该自增字段class TestModel(models.Model): id = models.AutoField(primary_key=True)
数据库层面对应的
SQL
语句如下:CREATE TABLE `myapp_testmodel` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
注意 如果要显式的自定义一个自增列,必须设置
primary_key=True
,否则会报错,即下面这种写法是不被允许的:class TestModel(models.Model): tid = models.AutoField()
# 02. models.CharField
- 字符串字段
- 必须设置
max_length
参数 - choices 字段的使用
# 03. models.BooleanField
- 布尔类型
tinyint(1)
- 不能为空,可添加
Blank=True
# 04. models.ComaSeparatedIntegerField
- 用逗号分割的数字
varchar
- 继承
CharField
,所以必须max_length
参数
# 05. models.DateField
- 日期类型
date
- DateField.auto_now: 保存时自动设置该字段为现在日期,最后修改日期
- DateField.auto_now_add: 当该对象第一次被创建是自动设置该字段为现在日期,创建日期
# 06. models.DateTimeField
- 日期时间类型
datetime
- 同
DateField
的参数
# 07. models.DecimalField
- 十进制小数类型
decimal
- DecimalField.max_digits: 数字中允许的最大位数
- DecimalField.decimal_places: 存储的十进制位数
# 08. models.EmailField
- 带有检查 Email 合法性的
CharField
# 09. models.FloatField
- 浮点类型
double
# 10. models.IntegerField
- 整型
int
# 11. models.BigIntegerField
- 长整型
# 12. models.GenericIPAddressField
- 一个带有检查 IP地址合法性的
CharField
# 13. models.NullBooleanField
- 允许为空的布尔类型
# 14. models.PositiveIntegerField
- 正整数
# 15. models.PositiveSmallIntegerField
- 正
smallInteger
# 16. models.SlugField
- 减号、下划线、字母、数字
# 17. models.SmallIntegerField
- 数字
tinyint
、smallint
、int
、bigint
# 18. models.TextField
- 大文本。默认对应的
form
标签是textarea
# 19. models.TimeField
- 时间
HH:MM[:ss[.uuuuuu]]
# 20. models.URLField
- 一个带有URL合法性校验的
CharField
# 21. models.BinaryField
- 二进制
- 存储二进制数据。不能使用
filter
函数获得QuerySet
# 22. models.ImageField
- 图片
- ImageField.height_field、ImageField.width_field: 如果提供这两个参数,则图片将按提供的高度和宽度规格保存,该字段要求 Python Imaging 库
Pillow
- 会检查上传的对象是否是一个合法图片
# 23. models.FileField
- 文件
- FileField.upload_to: 用于保存上传文件的本地文件系统路径,该路径由
MEDIA_ROOT
中设置
# 24. models.FilePathField
- FilePathField.path: 文件的绝对路径,必填
- FilePathField.match: 用于过滤路径下文件名的正则表达式,该表达式将用在文件名上(不包括路径)
- FilePathField.recursive:
True
或False
,默认为False
,指定是否应包括所有子目录的路径。
# 二、 字段常用参数
# 01. null
- 如果是
True
,Django
会在数据库中将此字段的值置为NULL
,默认值是False
# 02. blank
- 如果为
True
时django
的Admin
中添加数据时可允许空值,可以不填。如果为False
则必须填。默认是False
null
纯粹是与数据库有关系的;而blank
是与页面必填项验证有关的
# 03. primary_key
- 主键,对
AutoField
类型设置主键后,就会代替原来的自增id
字段
# 04. auto_now
- 自动创建-无论添加或修改,都是当前操作的时间
# 05. auto_now_add
- 自动创建-永远是创建时的时间
# 06. choices
- 一个二维的元组被用作
choices
,如果这样定义,Django
会select box
代替普通的文本框
# 07. max_length
- 字段长度
# 08. default
- 默认值
# 09. verbose_name
Admin
中字段的显示名称,如果不设置该参数时,则为属性名
# 10. db_column
- 数据库中的字段名称
# 11. unique
- 不允许重复
# 12. db_index
- 数据库索引
# 13. editable
- 在
Admin
里是否可编辑
# 14. error_messages
- 错误提示
# 15. auto_created
- 自动创建
# 16. help_text
- 在
Admin
中提示帮助信息
# 17. validators
- 验证器
# 18. upload-to
- 文件上传时的保存上传文件的目录