• 模型类被定义在应用文件夹下的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_addauto_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定义模型类的更多相关文章

  1. django定义模型类-14

    目录 1. 定义 字段类型 约束类型 django的模型类定义在应用下的 models.py 文件中. 模型类继承自 django.db.models 包下的 Model 类. 新创建应用 book ...

  2. Django(三) 模型:ORM框架、定义模型类并创建一个对应的数据库、配置Mysql数据库

    一.模型概述 https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial02/ https://www.runoob.com/django/dj ...

  3. django的模型类管理器-----------数据库操作的封装

    模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除 ...

  4. django 通过模型类操作数据表(基础增删改查)

    进入项目shell的命令: python manage.py shell 以下为在相互shell终端中演示的例子: 首先导入模型类:(from 应用名.models import 类名) from b ...

  5. django之模型类在视图中的应用

    一:模型类直接从把前端表单传入的值,进行存储. @csrf_exempt def regist(request): if request.method == 'POST': form = UserFo ...

  6. 7.Django模型类的定义和管理

    Django的模型类是给ORM层服务的 1.每个数据模型都是django.db.models.Model的子类. 2.它的父类Model包含了所有必要的和数据库交互的方法,并提供了定义数据库字段的语法 ...

  7. Django商城项目笔记No.3用户部分-用户模型类

    Django商城项目笔记No.3用户部分-用户模型类 Django提供了认证系统,文档资料https://yiyibooks.cn/xx/Django_1.11.6/topics/auth/index ...

  8. Django笔记--模型

    ORM是"对象-关系-映射"的简称,在Django当中,ORM就是模型类的管理器对象.操作顺序是先定义模型类,再定义模型类管理器,然后在模型类中实例化一个模型类管理器的对象,作为模 ...

  9. Django:模型model和数据库mysql(一)

    以一个栗子尝试来记录: 两个表存储在数据库中,BookInfo表示书,HeroInfo表示人物.一本书中有多个人物 在MySQL中新建一个数据库Django1,不用创建表,用Django模型来配置数据 ...

随机推荐

  1. mysql insert into select 语法

    Insert into Table2(field1,field2,...) select value1,value2,... from Table1  这样就对了

  2. Python 并发编程:PoolExecutor 篇

    个人笔记,如有疏漏,还请指正. 使用多线程(threading)和多进程(multiprocessing)完成常规的并发需求,在启动的时候 start.join 等步骤不能省,复杂的需要还要用 1-2 ...

  3. KMP板子+Trie板子

    KMP算法是一个字符串匹配算法,最直白的用法就是在一个长度为n的字符串T中查找另一个长度为m字符串P的匹配(总之就是用于文本中进行单个字符串的匹配). 对于这个问题,暴力算法是很好做的,直接对于T的每 ...

  4. Week2 Teamework from Z.XML - 必应缤纷桌面助手 - 软件分析与用户需求调查

    软件分析与用户需求调查(2013) from Z.XML 本次团队作业要求: 通过定性, 定量地分析, 总结和评定某软件是否满足了目标用户的需求,并把分析的过程和结果用博客表达出来. 选题:必应缤纷桌 ...

  5. lintcode-111-爬楼梯

    111-爬楼梯 假设你正在爬楼梯,需要n步你才能到达顶部.但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部? 样例 比如n=3,1+1+1=1+2=2+1=3,共有3中不同的方法 返回 3 ...

  6. 【bzoj4070】[Apio2015]雅加达的摩天楼 set+堆优化Dijkstra

    题目描述 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼外,雅加达市没有其他摩天楼. 有 M 只叫做 “doge” 的神秘生物 ...

  7. 【bzoj2007】[Noi2010]海拔 最小割+对偶图+最短路

    题目描述 YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个交 ...

  8. [ZJOI2008]骑士 DP dfs

    ---题解--- 题解: 观察题面可以很快发现这是一棵基环内向树(然而并没有什么用...) 再稍微思考一下,假设将这个环中的任意一点设为root,然后去掉root到下面的特殊边(即构成环的那条边),那 ...

  9. cdq分治入门学习 cogs 1752 Mokia nwerc 2015-2016 G 二维偏序

    /* CDQ分治的对象是时间. 即对于一个时间段[L, R],我们取mid = (L + R) / 2. 分治的每层只考虑mid之前的修改对mid之后的查询的贡献,然后递归到[L,mid],(mid, ...

  10. BZOJ_DAY6???

    昨天没睡好啊啊啊,真是要命,睡不着,今天状态爆炸...34题击破. 下一步目标:网络流24题,树链剖分. (洛谷比赛了好开心,希望这次能比以前强吧,嗯)