模型

  1. Django 模型是描述数据的,它包含存储数据的重要字段和行为。 一个模型映射一张数据库表。

  2. 模型采用ORM来映射数据库表。

  • 每个模型都是一个 Python 的类,这些类继承 django.db.models.Model
  • 模型类的每个属性都相当于一个数据库的字段
  • 利用模型访问数据库进行查询
  1. 如果模型中未定义主键,则表(模型)会字段添加一个id自增字段;如果显式地设置了primary_key,将不会自动在表(模型)中添加 id 列

  2. 要使模型映射到数据库表需要运行 py manage.py migrate, 与此同时,可以 py manage.py makemigrations 命令进行迁移成文件,方便以后检查、调用、重做等等

  3. 如果定义了模型且要使用它,需要在 setting.py 中的 INSTALLED_APPS 添加由 manage.py startapp 创建的app名称

字段(Field)

字段类型

字段 类型
AutoField 自动递增
BigAutoField 64位AutoField
BigIntegerField 64位整数IntegerField
BinaryField 二进制数据
BooleanField 布尔值
CharField 字符串
DateField 日期
DateTimeField 日期和时间
DecimalField 固定精度的十进制数字
DurationField 存储时间段
EmailField 电子邮件地址
FileField 文件
FilePathField 文件路径
FloatField 浮点数
ImageField 图像
IntegerField 整数
GenericIPAddressField 字符串格式的IPv4或IPv6地址
NullBooleanField null(null=True)
PositiveIntegerField 正整数
PositiveSmallIntegerField 正短整数或0
SlugField 仅包含字母,数字,下划线或连字符, 用于URL
SmallAutoField 小整数AutoField
SmallIntegerField 小整数IntegerField
TextField 文本类型
TimeField 时间
URLField URL
UUIDField 用于存储通用唯一标识符
ForeignKey 多对一的关系 (关联关系字段)
ManyToManyField 多对多关系 (关联关系字段)
OneToOneField 一对一关系 (关联关系字段)

字段选项

选项 功能
max_length 指定数据库存储数据时用的字节数
null 字段为空时,将数据库中该字段设置为 NULL。默认为 False
blank 字段允许为空。默认为 False
choices 将二元组用作此字段的选项; 每个二元组的第一个值会储存在数据库中,而第二个值将只会用于在表单中显示
db_column 字段的数据库列的名称
db_index 为字段创建数据库索引
db_tablespace 如果字段已建立索引,则用于该字段的索引的数据库表空间的名称
default 字段的默认值
editable 字段是否可编辑
error_messages 字段错误时引发的提示,值是一个字典
help_text 额外的“帮助”文本
primary_key 字段设置为该模型的主键
unique 字段的值必须在整个表中保持唯一
unique_for_date 日期字段或日期时间字段的值唯一
unique_for_month 日期字段或日期时间字段中的月份的值唯一
unique_for_year 日期字段或日期时间字段中的年份的值唯一
verbose_name 该字段的可读名称
through 指定多对多关系使用哪个中间模型 (ManyToManyField)如果中间模型有多个外键需要使用 through_fields 手动选择一个外键

字段属性

属性 功能
auto_created 是否自动创建该字段
concrete 是否具有与其关联的数据库列
hidden 是否使用一个字段来支持另一个非隐藏字段的功能
is_relation 是否包含一个或多个其他模型的功能
model 返回定义字段的模型

Django models 模型相关推荐

  1. Django models模型

    Django models模型 一. 所谓Django models模型,是指的对数据库的抽象模型,models在英文中的意思是模型,模板的意思,在这里的意思是通过models,将数据库的借口抽象成p ...

  2. django models模型 内部类 class Meta 简介

    class Meta: #这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会相应数据库表的.一般我们用它来归纳一些公共属性字段,然后继承它的子类能够继承这些字段.abstract=True ...

  3. python建立文件数据库_python学习-- Django根据现有数据库,自动生成models模型文件...

    Django引入外部数据库还是比较方便的,步骤如下 : 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自 ...

  4. Python之django框架模型(models)详解

    第一部分:模型类介绍 1.1 定义属性 Django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表创建 ...

  5. Django 之 Models(Models 模型 数据表关系)

    Models 模型 ORM django连接数据库 models类的使用 定义和数据库表映射的类 字段常用参数 数据库的迁移 数据相关操作 查看数据库中的数据 查找数据 添加数据 常见查找方法 数据库 ...

  6. 快速上手Django(二) Django 根据模型(models)生成更新数据库表make migrations

    文章目录 一.Django 根据模型(models)生成更新数据库表make migrations 0. 基础 1. 根据mode生成更新数据库表 2. 迁移的回退 3. migrations目录 需 ...

  7. Django设计模型1.2

    设计介绍 本示例完成"图书-英雄"信息的维护,需要存储两种数据:图书.英雄 图书表结构设计: 表名:BookInfo 图书名称:btitle 图书发布时间:bpub_date 英雄 ...

  8. 【Django】模型层说明

    [Django模型层] 之前大概介绍Django的文章居然写了两篇..这篇是重点关注了Django的模型层来进行学习. ■ 模型定义 众所周知,Django中的模型定义就是定义一个类,其基本结构是这样 ...

  9. Django层级模型定义及序列化嵌套的方法

    ----------Django==2.0.2----------- 一.Django层级模型的定义 实例:(商品模型) class GoodsCategory(models.Model):" ...

最新文章

  1. ios开发常识(1)开发语言和参考资料
  2. 为 Vue3 学点 TypeScript, 命名空间(namespace)是什么?
  3. 【点击模型学习笔记】Predicting Clicks_Estimating the Click-Through Rate for New Ads_MS_www2007...
  4. html页面展示Json样式
  5. 大四报了个天价培训班,变成量产型炮灰工程师
  6. 蓝绿发布、滚动发布、灰度发布,有什么区别?
  7. /dev/null Read-only file system 系统无法启动
  8. UART 异步串行通信发送模块设计与实现
  9. 为什么有些没读过书的人做生意却很厉害?
  10. ES6学习笔记(二):教你玩转类的继承和类的对象
  11. MySQL(21)--- GROUP BY 语句
  12. 使用sqlmetal工具自动生成SQL数据库的Linq类文件
  13. [转]编程之美数组分割问题
  14. 如何监控mysql主从之间的延迟
  15. 【原创】3大主流的移动应用方式APP开发姿势解读
  16. Linux系统ftp服务器搭建
  17. 把一个base64编码的图片绘制到canvas (canvas的图片在转成dataurl)
  18. node+express 使用multer进行文件上传,并且以PM2启动时的错误
  19. 入侵html数据库,教你如何暴库(网站入侵)
  20. KinectSDK + Unity3D学习总结

热门文章

  1. SQL Compare数据库比较工具 完全破解+使用教程
  2. 修改so文件的关键方法
  3. 苹果动态壁纸库怎么增加_苹果xr如何添加动态壁纸设置
  4. BaseAdapter的notifyDataSetChanged方法
  5. 电脑怎么翻译图片中的文字?快速翻译图片文字的方法
  6. micropython按键检测_TM1650按键扫描
  7. 【分治法】逆序对的数量(结合归并排序,含详细思想、解法、代码及注释)
  8. vue脚手架创建项目时的 linter / formatter 配置选择
  9. java、C语言数组反转
  10. 常见网络摄像机(摄像头)的端口及RTSP地址