Django models中常用的字段类型
数值型
这些类型都是数值相关的.
l AutoField int(11). 自增主键,Django Model默认提供,可以被重写.完整定义是
id = models.AutoField(primary_key=True)
l BooleanFueld tinyint(1). 布尔类型字段,一般用于记录状态标记.
l DecimalField decimal. 开发对数据精度要求高的业务时考虑使用,比如做支付相关,金融相关.定义时需要指定精确到多少位,例如
case = models.DecimalField(max_digits=8, decimal_places=2, default=0)
定义长度为8, 精度为2的数字.
l IntegerField int(11) 整型,用于保存一个整数
l PositiveIntegerField 只包含正整数
l SmallIntegerField smallint. 小整数时会用到
字符型
这些字段都是用来存储字符数据的,对应到MySQL中有两种类型:longtext和varchar.
l CharField varchar 基础的varchar类型
l URLField 继承自CharField,实现了对URL的特殊处理,会预先检查URL是否存在且有效
l UUIDField char(32) 用来存放生成的唯一id
l EmailField 类似于URLField,对E-mail的特殊处理
l FileField 同URLField, 多了对文件的特殊处理,必须参数是upload_to
l TextField longtext 一般用于存放大量文本内容,比如新闻正文,博客正文.
l ImageField 继承自FileField, 会判断路径是否是图片,可以设置图片保存的宽高(width_file,height_field)
l FilePathField 选择指定目录按限制规则选择文件
- path:必须参数,一个目录的绝对路径
- match:可选参数,一个正则表达式,用它来过滤文件名
- recursive:可选参数,是否包括path下的全部子目录,默认为False
日期类型
l DateField 日期类型YYYY-MM-DD
- auto_now = True每次更新都会更新这个时间
- auto_now_add = True则只是第一次创建添加,之后更新不做改变
l DateTimeField 日期类型 YYYY-MM-DD hh:mm:ss 参数与DateField相同
l TimeField 日期类型hh:mm:ss
关系类型
l ForeignKey 一对多
l OneToOneField 一对一
l ManyToManyField 多对多,会创建一个中间表.
Model常用参数
l null 用于设定在数据库层面是否允许为空
l blank 针对表单提交时是否允许为空
- 个人理解,null=True在数据库中是NULL,而blank=True则是在表单提交时可以为空,但在数据库中则是‘‘.在文章填写摘要时就需要用到这个.
l choices 配置后,在admin页面可以看到对应的可选项展示
l db_column 可以指定Model中的某个字段对应数据库中的哪个字段
l db_index 索引配置.
l default. 默认值
l editable 是否可编辑, 默认为True, 如果不想把此字段展示到页面上则可以配置为False
l error_messages 字典格式,用来自定义字段值校验失败时的异常提示.key可以是null, blank, invalid, invalid_choice, unique和unique_for_date.
l help_text 字段提示语.在页面对应字段下方会展示
l primary_key 主键.
l unique. 唯一约束
l unique_for_date 针对date的联合约束
l verbose_name. 字段对应的展示文案
l validators. 自定义校验逻辑
此处只是一些简单的总结,同时可能会有部分地方有错误,毕竟我知识有限,完整资料请参考官方文档
原文地址:https://www.cnblogs.com/ylnx-tl/p/12604564.html