Django ————ORM:ORM常用字段类型

别光看教程了!手把手带你用STM32F103C8T6最小系统板点亮第一个LED(附完整电路图) 本文详细介绍了如何使用STM32F103C8T6最小系统板点亮第一个LED,从硬件连接到软件开发环境搭建,再到编写和下载程序,手把手教你完成STM32入门的第一步。适合初学者快速上手STM32开发,附完整电路图和代码示例。 阅读详情

ORM:object relational mapping,对象关系映射

django中使用原生sql的弊端:
  1、SQL语句重复率很高,利用率不高
  2、如果业务逻辑生变,原生SQL更改起来比较多
  3、容易忽略一些web安全问题,如SQL注入

ORM的优点:
  易用性:使用ORM做数据库的开发可以有效的减少重复SQL语句的概率,写出来的模型也更加直观、清晰。
  性能损耗小:ORM转换成底层数据库操作指令确实会有一些开销。但从实际的情况来看,这种性能损耗很少(不足5%),只要不是对性能有严苛的要求,综合考虑开发效率、代码的阅读性,带来的好处要远远大于性能损耗,而且项目越大作用越明显。
  设计灵活:可以轻松的写出复杂的查询。
  可移植性:Django封装了底层的数据库实现,支持多个关系数据库引擎,包括流行的MySQL、PostgreSQL和SQLite。可以非常轻松的切换数据库。

ORM常用字段类型:
  1、CharField:字符串类型,映射到数据库中会转换成varchar类型,使用时必须传入max_length属性以定义该字符串的最大长度,如果超过254个字符,就不建议使用CharField了,此时建议使用TextField。

 

  2、EmailField:在数据库底层也是一个varchar类型,默认最大长度是254个字符,当然也可以自己传递max_length参数,这个Field在数据库层面不会限制一定要传递符合email条件的字符串,只是以后在使用ModelForm表单验证时,会起作用

 

  3、URLField:类似于CharField,在数据库底层也是一个varchar类型,只不过只能用来存储url格式的字符串。并且默认的max_length是200,同EmailField


  4、FloatField:浮点数类型,映射到数据库中会变成double类型


  5、IntegerField:整数类型,映射到数据库中会变成11位的int类型

 

  6、BigIntegerField:大整形。值的区间是-9223372036854775808——9223372036854775807

 

  7、PositiveIntegerField:正整形。值的区间是0——2147483647

 

  8、SmallIntegerField:小整形。值的区间是-32768——32767

 

  9、PositiveSmallIntegerField:正小整形。值的区间是0——32767

 

  10、BooleanField:布尔类型(True/False),映射到数据库中会变成长度只有1位的tinyint类型,这个Field不接受null参数,要想使用可以为null的布尔类型的字段,就要使用NullBooleanField

 

  11、AutoField:自增长类型,映射到数据库中是11位的整数,使用此字段时,必须传递primary_key=True,否则在生成迁移脚本文件时,就会报错,一个模型不能有两个自增长字段。一般情况下我们用不到这个字段,如果不定义主键,django会自动的为我们生成id字段作为主键

 

  12、BigAutoField:自增长类型,用法同AutoField。映射到数据库中会成为20位的bigint类型

 

  13、DateTimeField:日期时间类型,在python中对应的是datetime.datetime类型,在映射到数据库中也是datetime类型。使用这个Field可以传递以下几个参数:
    auto_now=True:在每次这个数据保存的时候,都使用当前的时间。比如作为一个记录修改日期的字段
    auto_now_add=True:在每条数据第一次被添加进去的时候,都使用当前的时间。比如作为一个记录第一次入库的字段
    注意:如果在setting.py中配置了USE_TZ=True,那么上两个默认值都来自于django.utils.timezone.now所转化来的值

    在模板中将一个UTC时间转换成本地时间:
    首先模板HTML文件的开头导入tz:
      {% load tz %}
    在传递过来的时间变量utc_time中使用localtime过滤器:
      {{utc_time | localtime}}
    其实,django知道我们的想法,已经为我们做好了配置,我们并不需要配置其他的东西就可以直接使用{{utc_time}},此时只要我们在setting.py文件中设置  USE_TZ=True,TIME_ZONE='Asia/Shanghai',UTC时间变量在渲染到模板上的时候会自动的为我们加载成TIME_ZONE中所设置的时区的时间。

 

  14、DateField:日期类型,用法同DateTimeField,在python中对应的是datetime.date类型,在映射到数据库中是date类型

 

  15、TimeField:时间类型,用法同DateTimeField,在python中对应的是datetime.time类型,在映射到数据库中是time类型

 

  16、FileField:用来存储文件的

 

  17、ImageField:用来存储图片文件的

 

  18、TextField:大量的文本类型

 

  19、DecimalField: 一个固定精度的十进制数类型,使用时必须要传递两个参数,max_digits数字的最大总长度(不含小数点),decimal_places小数部分的长度

 

Field的常用参数:
  1、null:标识是否可以为空,默认是为False。在使用字符串相关的Field(CharField/TextField/URLField/EmailField)的时候,官方推荐尽量不要使用这个参数,也就是保持默认值False。因为Django在处理字符串相关的Field的时候,即使这个Field的null=False,如果你没有给这个Field传递任何值,那么Django也会使用一个空的字符串""来作为默认值存储进去。因此如果再使用null=True,Django会产生两种空值的情形(NULL或者空字符串)。如果想要在表单验证的时候允许这个字符串为空,那么建议使用blank=True。如果你的Field是BooleanField,由于BooleanField不接受null参数,因此你如果想要设置这个字段可以为空的bool类型,那么对应的可空的bool类型字段则为NullBooleanField。

 

  2、blank:标识这个字段在表单验证的时候是否可以为空,默认是False。这个和null是有区别的,null是一个纯数据库级别的。而blank是表单验证级别的。

 

  3、db_column:这个字段在数据库中的名字。如果没有设置这个参数,那么将会使用模型中属性的名字。

 

  4、db_index:标识这个字段是否为索引字段。

 

  5、default:默认值。可以为一个值,或者是一个函数,但是不支持lambda表达式。并且不支持列表/字典/集合等可变的数据结构。在用函数作为值传递给default时,只能传递函数名,不需要加括号。

 

  6、primary_key:是否为主键,与AutoField/BigAutoField连用,默认是False。

 

  7、unique:在表中这个字段的值是否唯一,在数据库中就是唯一约束,一般是设置手机号码/邮箱等。

 

  8、choices:在一个范围内选择出一项,注意这个选项与ForeignKey的区别
    作用:1、django admin中显示下拉框;2、避免连表查询

    TYPE_CHOICES = (   #数据库只保存内部元祖的第一个值,后面的值保存在内存中
      (0, '---'),
      (1, '第一类'),
      (2, '第二类'),
      (3, '第三类'),
    )
    type = models.IntegerField(default=0,choices=TYPE_CHOICES)

 

模型中Meta配置:
  对于一些模型级别的配置。我们可以在模型中定义一个类,叫做Meta。然后在这个类中添加一些类属性来控制模型的作用。比如我们想要在数据库映射的时候使用自己指定的表名,而不是使用模型的名称。那么我们可以在Meta类中添加一个db_table的属性。示例代码如下:

  class Book(models.Model):
    name = models.CharField(max_length=20,null=False)
    desc = models.CharField(max_length=100,null=True,blank=True)

    class Meta:
      db_table = 'book_model'

  以下将对Meta类中的一些常用配置进行解释。

  1、db_table:这个模型映射到数据库中的表名。如果没有指定这个参数,那么在映射的时候将会使用模型所在app的名称加上模型名的小写来作为默认的表名。

 

  2、ordering:设置在提取数据的排序方式,因为可以按照多个字段以优先关系进行排序,所以需要传递一个字段的列表,在我们提取数据时,可以根据列表中字段从前到后(优先级从高到低)的方式排序,排序默认为正序,如果你需要哪个字段按倒序排列,就可以在这个字段前面加上"-"。后面章节会讲到如何查找数据。比如我想在查找数据的时候根据添加的时间排序,那么示例代码如下:

  class Book(models.Model):
    name = models.CharField(max_length=20,null=False)
    desc = models.CharField(max_length=100,name='description',db_column="description1")
    pub_date = models.DateTimeField(auto_now_add=True)

    class Meta:
      db_table = 'book_model'
      ordering = ['pub_date',

LVGL(lv_table) LVGL中的lv_table是一个轻量级表格控件,用于显示行列式文本数据。它支持设置单元格内容/样式、行列调整、事件响应等基础功能,适用于参数配置、数据展示等场景。通过API可快速创建表格,设置行列数、填充数据,并自定义对齐方式与样式。但需注意默认无滚动条、行数限制等问题。该控件适合简单表格需求,复杂交互需结合自定义事件处理。 阅读详情

相关推荐

MIA文献阅读 —— 深度学习在医学图像分析中的最新进展及临床应用【2024】_再现性;深度学习

coderVAEVAEVAE) (Kingma威林,2014)在概率性的工作方式学习观测数据之间的映射空间x∈Rmx∈R^mx∈Rm 和潜在的空间z∈Rnmnz∈Rn(m>>n)。作为一个潜变量模型,VAEVAEVAE制定这个问题作为观察样品的最大化对数似logpxlog∫px∣zpzdzpx∣zp (x | z)p(x∣z)可以很容易地使用神经网络建模,和pzp (z)

2401_84181704的博客 1241

ORM的模型类字段类型,字段选项,Meta类,管理器对象,创建数据,create(),Django Shell,查询数据,all(),values(),order_by(),values_list()

ORM的模型类字段类型,字段选项,Meta类,管理器对象,创建数据,create(),Django Shell,查询数据,all(),values(),order_by(),values_list(),

君子以阅川的博客 756

5个免费股票数据API实测对比:从AkShare到BaoStock,哪个最适合你的AI量化项目?

本文深度评测了AkShare、BaoStock、yfinance、Alpha Vantage和EOD Historical Data这五个免费股票数据API,从数据质量、覆盖范围、更新频率、稳定性及易用性进行对比。针对AI量化项目,文章提供了详细的选型策略,帮助开发者根据项目阶段与需求,精准选择最适合的数据源,并强调了多源验证与数据清洗的重要性。

weixin_29290947的博客 5072

Django项目知识点(三)

https://mp.weixin.qq.com/s/ozPbJl5ZTn9MSWaxZUUqxA 本文一篇完全介绍django的最重要的model 6.django model 模型是数据唯一而且准确的信息来源。它包含正在储存的数据的重要字段和行为。一般来说,每一个模型都映射一个数据库表。 这个模型定义了一个 Person, 其拥有 first_name 和 last_name: from dj...

微信号:RunsenLiu 1457

iPhone用户必看:不装App也能搞定GitHub 2FA验证的3种方法(附恢复码管理技巧)

本文为iPhone用户提供了无需安装第三方App即可完成GitHub双重身份验证(2FA)的三种原生方案:利用相机扫码与iCloud钥匙串自动填充、使用iCloud钥匙串内置的TOTP验证码生成器,以及借助Safari浏览器扩展。文章详细解析了每种方法的操作步骤、适用场景,并重点强调了恢复码的安全管理与多层备份策略,帮助开发者在提升账户安全的同时,享受苹果生态的无缝便捷体验。

weixin_29324401的博客 651

思博伦Spirent TestCenter创建单播流uni-stream

Traffic Generator列表中会出现刚才创建的uni-stream,创建完成。通常测试情况下,主要对Ethenet II和IPv4 Header进行配置。(通常情况下,如果流配置比较规范,选择任意端口接收,也没问题。编辑uni-stream基本信息。配置本条流由STC哪个端口接收。

辗转反测的博客 1680

【六】Django框架之ORM常用字段及参数

【一】引入 一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时。 id字段是自动添加的,如果你想要指定自定义主键,只需在其中一个字段中指定 primary_key=True 即可。 如果Django发现你已经明确地设置了Field.primar...

Chimengmeng的博客 1684

【SerDes】美信GMSL2-CSI调试心得

美信GMSL2加解串器芯片家族广泛应用于车载和工业视觉系统。文章介绍了MAX96717/MAX96717F加串器和MAX96724/MAX96724R解串器的关键特性,包括支持MIPI CSI-2接口、6Gbps传输速率等功能。提供了基于高通平台的demo系统配置和调试步骤,重点阐述了Link Lock、PCLK检测和Video Lock等关键调试环节,并详细说明了像素模式,隧道模式的工作原理及寄存器配置示例。文中还包含通过I2C读写寄存器的具体操作指令,取流freeze可能原因和解决方法。

qq_38089448的博客 2479

sqlalchemy的ORM常用数据类型详解

1.ORM常用数据类型 Integer:整形 Float:浮点类型 Boolean:布尔类型 DECIMAL:定点类型 enum:枚举类型 date:日期类型 DateTime:日期时间类型 Time:时间类型 String:字符类型 text:文本类型 longtext:长文本类型 ...

落叶的博客 1072

2026华为OD机试(C语言)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C语言实现。

MISAYAONE的博客 11万+

k8s问题处理

执行 kubectl api-resources 报错如下。

weixin_40548182的博客 944

django 数据模型常用字段类型

字段类型(Field types) 1、AutoField 它是一个根据 ID 自增长的 IntegerField 字段。通常,你不必直接使用该字段。如果你没在别的字段上指定主 键,Django 就会自动添加主键字段。 2、BigIntegerField 64位整数,类似于IntegerField,范围从-9223372036854775808 到9223372036854775807。默认的form widget 是TextInput。 3、BooleanField 一个布尔值(true/false)字段

无笺札记 3427

端侧 AI 落地避坑指南(中):为什么 QAT 救不了精度?——对齐“融合后算子“的硬件物理约束

在上一篇文章中,我们深入探讨了量化的本质,并得出结论:QAT(量化感知训练)是保持精度的关键。明明做了 QAT,精度还是崩塌了!让我们看一个真实的案例:✅ 使用了✅ 配置了量化✅ 训练了 50 个 epoch,学习率降为原来的 1/10✅ 冻结了 BN 统计量FP32 模型:mAP = 0.85QAT 后 FP32:mAP = 0.84(正常)工具量化后:mAP = 0.68(崩塌!问题出在哪里?层融合(Layer Fusion)机制。

weixin_51988935的博客 55

Django ORM常用字段类型

在设计模型类时,字段类型的选择至关重要,对项目的开发,甚至性能都会有影响。下面我列举出了在Django中,设计模型类时常用的字段类型,以对应MySQL为例。 自增类型: AutoField 能存储11个字节的整数,对应MySQL中的int(11),自增主键,Django是默认提供该字段的。 二进制类型: BinaryField 可存入二进制数据。 布尔类型: BooleanFi...

heibuliuqiu_gk的博客 513

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Django中ORM常用字段类型及参数

常用字段: <1> CharField 字符串字段, 用于较短的字符串. CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的最大字符数. <2> IntegerField #用于保存一个整数. <3> FloatField 一个...

weixin_30736301的博客 363

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

django mysql字段类型_Django ORM常用字段类型以及参数

这篇文章主要介绍了简单了解Django ORM常用字段类型及参数配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下一、数值型AutoField对应int(11)。自增主键,Django Model默认提供,可以被重写。BooleanField对应tinyint(1)。布尔类型字段,一般用于记录状态标记。DecimalField对应decimal。...

weixin_29467373的博客 661

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

plsql大字段保存类型_Day65 Django 开启事务/orm常用字段

目录Django中如何开启事务orm中常用字段及参数数据库查询优化1、Django中如何开启事务事务的ACID四个特性:原子性(Atomicity):不可分割的最小单位一致性(Consistency):跟原子性相辅相成隔离性(Isolation):事务之间互相不干扰持久性(Durability):事务一旦确认永久生效事务的回滚rollback事务的确认commit数据库三大设计范式待完善……如何开...

weixin_39614754的博客 178

Django的ORM框架 field类型和参数总结

Django的ORM(Object-Relational Mapping)框架提供了一种机制,允许开发者以Python类的方式定义数据库模型,而无需直接编写SQL语句。在定义模型时,字段(Field)是不可或缺的部分,它们定义了数据库表中每一列的数据类型和特性。

python_136的博客 1297

Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法...

Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法 一丶ORM常用字段和自定义字段 常用字段 AutoField # 主键 自增的整形字段,必填参数primary_key=True,则成为数据库的主键。无该字段时,django自动创建。 一个model不...

dayinji1212的博客 351

Django学习笔记4——Django ORM系统

Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 &amp;amp;amp;amp;nbsp; 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。 &amp;amp;amp;amp;nbsp; O...

Dev-L的博客 1125

DjangoORM字段参数、常用字段类型及参数、模型和表单验证器详解

由于项目原因必须使用DjangoORM模型,所以今天整理了一下关于DjangoORM模型里的详细内容。包含字段参数、常用字段类型及参数、模型和表单验证器。

python 熊猫 1386

Django 的 ORM框架、编写模型类Models

Django 的 ORM框架 ORM(Object Relational Mapping)即对象关系映射,它是一种程序技术,它允许你使用类和对象对数据库进行操作,从而避免通过SQL语句操作数据库 ORM框架的作用 建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。 根据设计的模型类生成数据库中的表格。 通过简单的配置就可以进行数据库的切换。 ORM 好处: 只需要面向...

**kwargs的博客 419

Django - - 基础 - - Django 中ORM介绍和字段及字段参数

目录 Object Relational Mapping(ORM) ORM介绍 Django中的ORM Django ORM 常用字段和参数 常用字段 字段合集(争取记忆 ) 自定义字段(了解为主) 字段参数 时间字段独有 关系字段 ForeignKey 字段参数 OneToOneField 示例 字段参数 ManyToManyField 字段参数 多对多关联关系的三种方式...

weixin_34148456的博客 153

Django笔记-模型层

1、模型类定义模型定义的基本结构:from django.db import models ​ class ModelName(models.Model):      field = models.xxfield(...)    field = models.xxfield(...) ​    class Meta:        db_table = ...        other...

Flye的博客 370

04 Django模型基础

django根据属性的类型确定以下信息。

x1343676的博客 1234

每天40分玩转Django:Django模型

name = models.CharField(max_length=100, verbose_name='分类名称')description = models.TextField(blank=True, verbose_name='分类描述')created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')verbose_name = '分类'('draft', '草稿'),

weixin_40780178的博客 1448
上一篇: 解决Ubuntu桥接模式不能上网方案
下一篇: Docker 的changjian命令
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值