一、ORM-基础字段及选项
任何关于表结构的修改,务必在对应模型类上修改
例如 给 books_book表添加一个info字段 varchar(100)
1.在模型中添加对应的类属性
2.执行数据库迁移
 
二、常用字段类型

BooleanField()
数据库类型:tinyint(1)
编程语言中使用True/False 来表示值
数据库中使用1/0来表示具体的值 CharField()
数据库类型:varchar
注意:必须指定max_length最大参数值 DateField()
数据库类型:date
作用:表示日期
参数:
1.auto_now:每次保存对象时,自动设置该字段为当前时间(取值:True/False)
2.auto_now_add:当对象第一次被创建时自动设置当前时间(取值:True/False)
3.default:设置当前时间(取值:字符串格式时间如:'2022-01-01')
Ps:以上三个参数只能多选一 DateTimeField()
数据库类型:datatime(6)
作用:表示日期和时间
参数同datefield FloatField()
数据库类型:double
编程语言和数据库中都使用小数表示 DecimalField()
数据库类型:decimal(x,y)
编程语言中使用小数表示该列的值
在数据库中:使用小数
参数:
max_digits:位总数,包括小数点后的位数,该值必须大于等于decimal_places
decimal_places:小数点后的数字数量 EmailField()
数据库类型:varchar
只存email,可以检查对应格式
编程语言和数据库中使用字符串 IntgerField()
数据库类型:int
编程语言和数据库中使用整数 ImageFiled()
数据库类型:varchar(100)
作用:在数据库中味了保存图片的路径
编程语言和数据库中使用字符串 TextField()
数据库类型:longtext
作用:表示不定长字符数据 官方文档:https://docs.djangoproject.com/zh-hans/2.2/ref/models/fields/
 
 
 
三、模型类-字段选项
 
官方文档:https://docs.djangoproject.com/zh-hans/2.2/ref/models/fields/#field-options

字段选项:指定创建的列的额外信息

允许出现多个字段选项,多个字段选项用逗号隔开

primary_key:如果设置为True表示该列为主键,如果指定一个字段为主键,则此数据表不会创建ID字段

blank:设置为True时,字段可以为空,设置为False时,字段必须填写

null:如果设置为True,表示该列值允许为空,默认是False,是False的时候建议加入default选项设置默认值

default:设置所在列的默认值

db_index:如果设置为True,表示为该列增加索引

unique:如果设置为True,表示该字段在数据库中的值必须是唯一的

db_column:指定列的名称,如果不指定的话采用属性名作为列名

verbose_name:设置次字段在admin界面上的显示名称
 
字段选项样例
 
 
四、模型类-Meta类
定义:使用内部Meta类来给模型赋予属性,Meta类下有很多内建的类属性,可以对模型类做一些控制
语法:
class model_name(models.Model):
字段... class Meta:
字段

示例:

 
app_label
app_label这个选项只在一种情况下使用,就是你的模型类不在默认的应用程序包下的models.py文件中,这时候你需要指定你这个模型类是那个应用程序的。比如你在其他地方写了一个模型类,而这个模型类是属于myapp的,那么你这是需要指定为:
app_label='myapp' db_table
db_table是用于指定自定义数据库表名的。Django有一套默认的按照一定规则生成数据模型对应的数据库表名,如果你想使用自定义的表名,就通过这个属性指定,比如:
table_name='my_owner_table'
若不提供该参数, Django 会使用 app_label + '_' + module_name 作为表的名字.
若你的表的名字是一个 SQL 保留字, 或包含 Python 变量名不允许的字符--特别是连字符 --没关系. Django 会自动在幕后替你将列名字和表名字用引号引起来. db_tablespace
有些数据库有数据库表空间,比如Oracle。你可以通过db_tablespace来指定这个模型对应的数据库表放在哪个数据库表空间。 get_latest_by
由于Django的管理方法中有个lastest()方法,就是得到最近一行记录。如果你的数据模型中有 DateField 或 DateTimeField 类型的字段,你可以通过这个选项来指定lastest()是按照哪个字段进行选取的。
一个 DateField 或 DateTimeField 字段的名字. 若提供该选项, 该模块将拥有一个 get_latest() 函数以得到 "最新的" 对象(依据那个字段):
get_latest_by = "order_date" managed
由于Django会自动根据模型类生成映射的数据库表,如果你不希望Django这么做,可以把managed的值设置为False。
默认值为True,这个选项为True时Django可以对数据库表进行 migrate或migrations、删除等操作。在这个时间Django将管理数据库中表的生命周期
如果为False的时候,不会对数据库表进行创建、删除等操作。可以用于现有表、数据库视图等,其他操作是一样的。 order_with_respect_to
这个选项一般用于多对多的关系中,它指向一个关联对象。就是说关联对象找到这个对象后它是经过排序的。指定这个属性后你会得到一个get_XXX_order()和set_XXX_order()的方法,通过它们你可以设置或者回去排序的对象。
举例来说, 如果一个 PizzaToppping 关联到一个 Pizza 对象, 这样做:
order_with_respect_to = 'pizza'
...就允许 toppings 依照相关的 pizza 来排序.
ordering
这个字段是告诉Django模型对象返回的记录结果集是按照哪个字段排序的。比如下面的代码:
ordering=['order_date']
# 按订单升序排列
ordering=['-order_date']
# 按订单降序排列,-表示降序
ordering=['?order_date']
# 随机排序,?表示随机
ordering = ['-pub_date', 'author']
# 对 pub_date 降序,然后对 author 升序
需要注意的是:不论你使用了多少个字段排序, admin 只使用第一个字段 permissions
permissions主要是为了在Django Admin管理模块下使用的,如果你设置了这个属性可以让指定的方法权限描述更清晰可读。
要创建一个对象所需要的额外的权限. 如果一个对象有 admin 设置, 则每个对象的添加,删除和改变权限会人(依据该选项)自动创建.下面这个例子指定了一个附加权限: can_deliver_pizzas:
permissions = (("can_deliver_pizzas", "Can deliver pizzas"),)
这是一个2-元素 tuple 的tuple或列表, 其中两2-元素 tuple 的格式为:(permission_code, human_readable_permission_name). unique_together
unique_together这个选项用于:当你需要通过两个字段保持唯一性时使用。这会在 Django admin 层和数据库层同时做出限制(也就是相关的 UNIQUE 语句会被包括在 CREATE TABLE 语句中)。比如:一个Person的FirstName和LastName两者的组合必须是唯一的,那么需要这样设置:
unique_together = (("first_name", "last_name"),) verbose_name
verbose_name的意思很简单,就是admin后台给你的模型类起一个更可读的名字:
verbose_name = "pizza"
若未提供该选项, Django 则会用一个类名字的 munged 版本来代替: CamelCase becomes camel case. verbose_name_plural
这个选项是指定,模型的复数形式是什么,比如:
verbose_name_plural = "stories"
若未提供该选项,admin后台 会使用 verbose_name + "s".
 

10.-ORM-基础字段及选项的更多相关文章

  1. Django orm常用字段和字段参数

    1.Object Relational Mapping(ORM) 1.1ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象 ...

  2. 10个基础的linux网络和监控命令

    配置zookeeper集群时,需要查看本机ip,输入命令 hostname -i   就会只显示主机ip, 下边搜了一篇常用的    命令,闲的时候多敲敲命令,以便用的时候再找! 我下面列出来的10个 ...

  3. ORM常用字段介绍

    Django中的ORM Django项目使用MySQL数据库 1. 在Django项目的settings.py文件中,配置数据库连接信息: DATABASES = { "default&qu ...

  4. Django框架 之 ORM 常用字段和参数

    Django框架 之 ORM 常用字段和参数 浏览目录 常用字段 字段合集 自定义字段 字段参数 DateField和DateTimeField 关系字段 ForeignKey OneToOneFie ...

  5. Django框架之第六篇(模型层)--单表查询和必知必会13条、单表查询之双下划线、Django ORM常用字段和参数、关系字段

    单表查询 补充一个知识点:在models.py建表是 create_time = models.DateField() 关键字参数: 1.auto_now:每次操作数据,都会自动刷新当前操作的时间 2 ...

  6. python 之 Django框架(ORM常用字段和字段参数、关系字段和和字段参数)

    12.324 Django ORM常用字段 .id = models.AutoField(primary_key=True):int自增列,必须填入参数 primary_key=True.当model ...

  7. Django中ORM常用字段及字段参数

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  8. Python--day68--Django ORM常用字段、不常用的字段、自定义字段

    ORM和数据库的对应关系: Django ORM 常用字段和参数 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建 ...

  9. ORM常用字段及查询

    目录 ORM常用字段及参数 创建表 ORM常用字段 ORM字段参数 ORM表关系创建 ForeignKey OneToOneField ManyToManyField 多对多三种创建方式 单表查询 q ...

随机推荐

  1. Docker 02 基本命令

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  2. day21--Java集合04

    Java集合04 9.Set接口方法 Set接口基本介绍 无序(添加和取出的顺序不一致),没有索引 不允许重复元素,所以最多只有一个null JDK API中接口的实现类有: Set接口的常用方法:和 ...

  3. Flutter 检测报错 Unable to locate Android SDK.

    安装好 Flutter SDK 之后,官方建议使用flutter doctor检查 Flutter SDK 的相关配置信息. 如果 Android Studio 安装 Android SDK 的时候选 ...

  4. Spring Bean 详解

    Spring Bean 详解 Ioc实例化Bean的三种方式 1 创建Bean 1 使用无参构造函数 这也是我们常用的一种.在默认情况下,它会通过反射调⽤⽆参构造函数来创建对象.如果类中没有⽆参构造函 ...

  5. 【manim】学习路径1-安装篇-windows、macOS

    下一章:https://www.cnblogs.com/remyuu/p/16462369.html 本系列以大量实战讲解manim数学动画引擎. 文档编辑器推荐:Sublime Text 这里是一些 ...

  6. 区块相隔虽一线,俱在支付同冶熔,Vue3.0+Tornado6前后端分离集成Web3.0之Metamask区块链虚拟三方支付功能

    最近几年区块链技术的使用外延持续扩展,去中心化的节点认证机制可以大幅度改进传统的支付结算模式的经营效率,降低交易者的成本并提高收益.但不能否认的是,区块链技术也存在着极大的风险,所谓身怀利器,杀心自起 ...

  7. Netty整合STOMP

    1.STOMP协议简介 常用的WebSocket协议定义了两种传输信息类型:文本信息和二进制信息.类型虽然被确定,但是他们的传输体是没有规定的,也就是说传输体可以自定义成什么样的数据格式都行,只要客户 ...

  8. Oracle 与 PostgreSQL 函数行为的差异引发性能差异

    对于Oracle,对于数据修改的操作通过存储过程处理,而对于函数一般不进行数据修改操作.同时,函数可以通过 Select 进行调用,而存储过程则不行. 一.对于volatile 函数的行为 1.Ora ...

  9. 如何结合整洁架构和MVP模式提升前端开发体验(二) - 代码实现篇

    上一篇文章介绍了整体架构,接下来说说怎么按照上图的分层结构实现下面的增删改查的功能. 代码结构 vue userManage └── List ├── api.ts ├── EditModal │ ├ ...

  10. QT学习(二)

    这一篇学习QT中最重要的也是最有特色的信号槽机制. (因为我学习过MFC,所以我觉得QT的信号槽机制和MFC中的消息响应机制是一一对应的.不过是MFC用的是宏来实现,而QT用的是消息和槽.相对来说QT ...