django定义模型类
- 模型类被定义在应用文件夹下的model.py中
- 模型类必须继承Django的models.Model类
- 属性名不能用连续的两条下划线__
- 主键:primary key,简写 pk
- 不需要主动定义,django会自动生成自增长的主键,属性名叫
id,- 如果开发者自己定义了主键,则django不会再生成默认的主键
格式:
属性名=models.字段类型(字段选项)
字段类型:
| 类型 | 说明 |
|---|---|
| AutoField | 自动增长的IntegerField,通常不用指定,不指定时Django会自动创建名为id的自动增长属性 |
| BooleanField | 布尔字段,值为True或False |
| NullBooleanField | 支持Null、True、False三种值 |
| CharField | 字符串,必须指定:max_length,表示最大字符个数 |
| TextField | 大文本字段,一般超过4000个字符时使用 |
| IntegerField | 整数 |
| DecimalField | 十进制浮点数,用python中的Decimal实例来表示 必须指定: max_digits最大位数,decimal_places小数位数。 |
| FloatField | 浮点数 |
| DateField | 日期 1) 参数 auto_now表示每次修改保存对象时,自动设置该字段为当前时间,用于保存"最后一次修改"时间,默认为False; 2) 参数 auto_now_add表示当对象第一次被创建时自动设置保存当前时间,用于保存"创建时间"时间,默认为值为False; 3) 参数 auto_now_add和auto_now是相互排斥的,不能同时用到一个属性中 |
| TimeField | 时间,参数同DateField |
| DateTimeField | 日期时间,参数同DateField |
| FileField | 上传文件字段 |
| ImageField | 继承于FileField,对上传的内容进行校验,确保是有效的图片 |
字段选项:
| 选项 | 默认值 | 描述 | 是否要迁移修改表结构 |
|---|---|---|---|
| null | False | True表示表字段允许为空 | 是 |
| unique | False | True表示表字段不能重复 | 是 |
| db_column | 属性名称 | 表字段名称 | 是 |
| primary_key | False | True表示字段设置为了主键,一般作为AutoField的选项使用 | 是 |
| db_index | False | 创建索引 | 是 |
| default | - | 默认值 | 否 |
| blank | False | 在django管理后台新增或编辑一条表数据时,该字段是否允许为空; null是数据库范畴的概念,blank是表单验证范畴的 |
否 |
| choices | - | 在django管理后台新增或编辑一条表数据时,该字段显示为下拉框,默认为编辑框 | 否 |
注意:
choices和blank主要是为django的管理后台页面服务的。
- choices: 性别属性使用了choices选项后,在录入一条数据时,会以下拉框显示
blank:blank属性默认值为false, 表示录入一条数据时,当前字段必须填写,不能为空,否则js端js校验不通过,例如:下图的comment员工备注信息字段。
如下图:

设置表名
- 默认为:应用名小写_模型类名小写
可通过通过
Meta类指定表名
示例:
# 如果应用名为users,则默认表名为:users_department
class Department(models.Model):
...
class Meta:
# 指定生成的数据库表的名字
db_table = 'department'
django定义模型类的更多相关文章
- django定义模型类-14
目录 1. 定义 字段类型 约束类型 django的模型类定义在应用下的 models.py 文件中. 模型类继承自 django.db.models 包下的 Model 类. 新创建应用 book ...
- Django(三) 模型:ORM框架、定义模型类并创建一个对应的数据库、配置Mysql数据库
一.模型概述 https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial02/ https://www.runoob.com/django/dj ...
- django的模型类管理器-----------数据库操作的封装
模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除 ...
- django 通过模型类操作数据表(基础增删改查)
进入项目shell的命令: python manage.py shell 以下为在相互shell终端中演示的例子: 首先导入模型类:(from 应用名.models import 类名) from b ...
- django之模型类在视图中的应用
一:模型类直接从把前端表单传入的值,进行存储. @csrf_exempt def regist(request): if request.method == 'POST': form = UserFo ...
- 7.Django模型类的定义和管理
Django的模型类是给ORM层服务的 1.每个数据模型都是django.db.models.Model的子类. 2.它的父类Model包含了所有必要的和数据库交互的方法,并提供了定义数据库字段的语法 ...
- Django商城项目笔记No.3用户部分-用户模型类
Django商城项目笔记No.3用户部分-用户模型类 Django提供了认证系统,文档资料https://yiyibooks.cn/xx/Django_1.11.6/topics/auth/index ...
- Django笔记--模型
ORM是"对象-关系-映射"的简称,在Django当中,ORM就是模型类的管理器对象.操作顺序是先定义模型类,再定义模型类管理器,然后在模型类中实例化一个模型类管理器的对象,作为模 ...
- Django:模型model和数据库mysql(一)
以一个栗子尝试来记录: 两个表存储在数据库中,BookInfo表示书,HeroInfo表示人物.一本书中有多个人物 在MySQL中新建一个数据库Django1,不用创建表,用Django模型来配置数据 ...
随机推荐
- java设计模式之模版方法模式以及在java中作用
模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有 ...
- POJ 2161 Chandelier(动态规划)
Description Lamps-O-Matic company assembles very large chandeliers. A chandelier consists of multipl ...
- 【解决】Node JS Error: ENOENT
The Node Beginner Book 书中的实例代码当上传图片时会报Error: ENOENT, 原因:图片默认会选择系统的缓存文件夹下,在windows下无权访问C盘,所以就报错了.. 解决 ...
- vs2017切换设计、拆分假死的解决
今天安装了vs2017版把vs2015卸载了,原因就是vs2015运行webform后ajaxpro总是会出现time out现象.太难受了,所以决定体验一下新版本. 安装了vs2017后ajaxpr ...
- ps aux 和ps -aux和 ps -ef的选择
转载自:足至迹留 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想 ...
- 【bzoj3262】陌上花开 CDQ分治+树状数组
题目描述 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当且仅当Sa&g ...
- Python 类和对象-下
类的常用函数 #issubclass() 检测一个类是否是另外一个或者一组类中的子类 class Father: pass class Mother: pass class LaoWang: pass ...
- 安卓sdk安装教程
http://blog.csdn.net/love4399/article/details/77164500
- Error in deleting blocks.
2014-08-24 22:15:21,714 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Error processing datan ...
- 7月18号day10总结
今天学习过程和小结 今天学会了用git从GitHub上克隆代码然后打包成jar包,然后在idea程序中引入这个jar包的依赖来使用jar包中的程序. 通过这个中的网址: 在Git Bash Here中 ...