一、 模型常用字段
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
- 文件上传时的保存上传文件的目录