Django ORM 定义模型

提示:定义模型字段的类型

文章目录


一、字段类型

  1. 常用字段
字段名 描述 备注
AutoField int 自增 必填参数 primary_key=True,无该字段时,django自动创建一个 BigAutoField,一个model不能有两个AutoField字段(不建议手动指定主键)
BooleanField 布尔 值为True,False
NullBooleanField 布尔 值为Null,True,False 已弃用(BooleanField(null=True))
CharField 字符串 必须提供max_length参数
TextField 文本
IntegerField 整型 SmallIntegerField(短整型),BigIntegerField(长整型),PositiveIntegerField(正整型),PositiveSmallIntegerField(短正整型)
DecimalField 10进制浮点数 max_digits表示总位数,decimal_places表示小数
FloatField 浮点数
DateField 日期(YYYY-MM-DD) auto_now:每次修改时修改为当前日期时间。auto_now_add:新创建对象时自动添加当前日期时间(相当于Python中的datetime.date的实例)
DatetimeField 日期(YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) 相当于Python中的datetime.datetime实例
FileField 文件字段 数据库本质为路径保存
OneToOneField 关系字段 用于定义一对一关系
ForeignKey 关系字段 用来定义多对一关系
ManyToManyField 关系字段 用于定义多对多关系

二、字段属性

参数 描述 备注
null True:允许存储 NULL 值 默认False(控制数据库存储,是否允许存储 NULL 值)
blank True:允许为空字符串 默认False(控制表单验证,是否允许在表单中留空)
db_column 字段名称 通常不需要手动指定
db_index True:创建索引 默认False
default 默认值
primary_key True:主键 每个模型只能有一个字段设置 primary_key=True,通常 Django 会自动添加 AutoField 或 BigAutoField 作为主键
unique True:唯一值 默认False
max_length 最大长度
max_digits 浮点型最大长度
decimal_places 小数点位数
auto_now 获取的是当前时间
choices 序列 STATUS_CHOICES = [(0, 'java'), (1, 'python')] (在表单中会显示为下拉框)
help_text 帮助文本 表单中显示的帮助文本,用于提供字段的说明

三、元信息

ORM对应的类里面包含另一个Meta类,而Meta类封装了一些数据库的信息。主要字段如下:

参数 描述
db_table ORM在数据库中的表名默认是 app_类名,可以通过db_table可以重写表名
index_together 联合索引
unique_together 联合唯一索引
ordering 字段排序(设置该属性,查询到的结果才可以被reverse())
相关推荐
小光学长7 分钟前
基于flask+vue框架的灯饰安装维修系统u49cf(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
Smilejudy9 分钟前
如何用 esProc 将数据库表转储提速查询
数据库
数据库砖家12 分钟前
YashanDB|使用 select * 创建物化视图无法触发查询重写?问题出在这儿!
数据库
考虑考虑38 分钟前
explicit_defaults_for_timestamp使用
数据库·后端·mysql
白-胖-子1 小时前
快速认识:数据库、数仓(数据仓库)、数据湖与数据运河
大数据·linux·数据库·数据仓库·人工智能
码熔burning1 小时前
Redis分片集群
数据库·redis·分片集群
程序员秘密基地1 小时前
基于pycharm,python,django,pytorch,mysql,深度学习,模型训练,在线植物,花卉分类系统
pytorch·python·深度学习·神经网络·django
小五Z1 小时前
Redis--主从复制
数据库·redis·分布式·后端·缓存
萤火夜1 小时前
MYSQL之基础认识(卸载安装登录, 基本概念)
数据库·mysql
马达加斯加D2 小时前
缓存 --- 缓存击穿, 缓存雪崩, 缓存穿透
数据库·redis·缓存