Django数据库字段类型与SQL对应关系备忘

Django Oracle后端 --- cx_Oracle字符集 背景 使用Django3.2.5作为后端开发框架,数据库为Oracle11.2。据Django官方文档说明,要求Oracle Database的最低版本为12c。阅读过Django中ORM(对象关系模型)的实现,ORM中常用的自增id、sql查询分页等数据库特性在Oracle11.2均没有实现,从Oracle12c版本开始才有这些特性,这也是Django框架要求Oracle版本最低为12c的主要原因。但是项目的数据库Oracle11.2已不可能更换。这也为后面各种业务的开发在某些具体方面... 阅读详情

_data_types = {
‘AutoField’: ‘integer AUTO_INCREMENT’,
‘BigAutoField’: ‘bigint AUTO_INCREMENT’,
‘BinaryField’: ‘longblob’,
‘BooleanField’: ‘bool’,
‘CharField’: ‘varchar(%(max_length)s)’,
‘CommaSeparatedIntegerField’: ‘varchar(%(max_length)s)’,
‘DateField’: ‘date’,
‘DateTimeField’: ‘datetime’,
‘DecimalField’: ‘numeric(%(max_digits)s, %(decimal_places)s)’,
‘DurationField’: ‘bigint’,
‘FileField’: ‘varchar(%(max_length)s)’,
‘FilePathField’: ‘varchar(%(max_length)s)’,
‘FloatField’: ‘double precision’,
‘IntegerField’: ‘integer’,
‘BigIntegerField’: ‘bigint’,
‘IPAddressField’: ‘char(15)’,
‘GenericIPAddressField’: ‘char(39)’,
‘NullBooleanField’: ‘bool’,
‘OneToOneField’: ‘integer’,
‘PositiveIntegerField’: ‘integer UNSIGNED’,
‘PositiveSmallIntegerField’: ‘smallint UNSIGNED’,
‘SlugField’: ‘varchar(%(max_length)s)’,
‘SmallIntegerField’: ‘smallint’,
‘TextField’: ‘longtext’,
‘TimeField’: ‘time’,
‘UUIDField’: ‘char(32)’

一、常用字段:

1、AutoField —自增列 = int(11) 如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。
2、CharField —字符串字段 单行输入,用于较短的字符串,如要保存大量文本, 使用 TextField。必须 max_length 参数,django会根据这个参数在数据库层和校验层限制该字段所允许的最大字符数。
3、BooleanField —布尔类型=tinyint(1) 不能为空,Blank=True
4、ComaSeparatedIntegerField —用逗号分割的数字=varchar 继承CharField,所以必须 max_lenght 参数,
5、DateField —日期类型 date 对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。
6、DateTimeField —日期类型 datetime 同DateField的参数
7、Decimal —十进制小数类型 = decimal 必须指定整数位max_digits和小数位decimal_places
8、EmailField —字符串类型(正则表达式邮箱) =varchar 对字符串进行正则表达式 一个带有检查 Email 合法性的 CharField,不接受 maxlength 参数。
9、FloatField —浮点类型 = double 浮点型字段。 必须提供两个 参数, 参数描述:
max_digits:总位数(不包括小数点和符号)
decimal_places:小数位数。如:要保存最大值为 999 (小数点后保存2位),你要这样定义字段:FloatField(…,max_digits=5, decimal_places=2),要保存最大值一百万(小数点后保存10位)的话,你要这样定义:FloatField(…,max_digits=19, decimal_places=10)
10、IntegerField —整形 用于保存一个整数
11、BigIntegerField —长整形

integer_field_ranges = {
‘SmallIntegerField’: (-32768, 32767),
‘IntegerField’: (-2147483648, 2147483647),
‘BigIntegerField’: (-9223372036854775808, 9223372036854775807),
‘PositiveSmallIntegerField’: (0, 32767),
‘PositiveIntegerField’: (0, 2147483647),
}
12、IPAddressField —字符串类型(ip4正则表达式) 一个字符串形式的 IP 地址, (如 “202.1241.30″)。
13、GenericIPAddressField —字符串类型(ip4和ip6是可选的) 参数protocol可以是:both、ipv4、ipv6 验证时,会根据设置报错
14、NullBooleanField —允许为空的布尔类型 类似 BooleanField, 不过允许 NULL 作为其中一个选项。 推荐使用这个字段而不要用 BooleanField 加 null=True 选项。 admin 用一个选择框      (三个可选择的值: “Unknown”, “Yes” 和 “No” ) 来表示这种字段数据。
15、PositiveIntegerField —正Integer 类似 IntegerField, 但取值范围为非负整数(这个字段应该是允许0值的…可以理解为无符号整数)
16、PositiveSmallIntegerField —正smallInteger 正小整型字段,类似 PositiveIntegerField, 取值范围较小(数据库相关)SlugField“Slug” 是一个报纸术语。 slug 是某个东西的小小标记(短签), 只包  含字母,数字,下划线和连字符。它们通常用于URLs。 若你使用 Django 开发版本,你可以指定 maxlength。 若 maxlength 未指定, Django 会使用默认长度: 50,它接受一个额外的参数:
prepopulate_from: 来源于slug的自动预置列表
17、SlugField —减号、下划线、字母、数字 它们通常用于URLs。
18、SmallIntegerField —数字 数据库中的字段有:tinyint、smallint、int、bigint. 类似 IntegerField, 不过只允许某个取值范围内的整数。(依赖数据库)
19、TextField —字符串=longtext ,一个容量很大的文本字段, admin 管理界面用 多行编辑框表示该字段数据。
20、TimeField —时间 HH:MM[:ss[.uuuuuu]] 时间字段,类似于 DateField 和 DateTimeField。
21、URLField —字符串,地址正则表达式 用于保存URL。若 verify_exists 参数为 True (默认), 给定的 URL 会预先检查是否存在(即URL是否被有效装入且没有返回404响应).
22、BinaryField —二进制
23、ImageField —图片 类似 FileField, 不过要校验上传对象是否是一个合法图片。用于保存图像文件的字段。其基本用法和特性与FileField一样,只不过多了两个属性height和width。默认情况下,该字段在HTML中表现为一个ClearableFileInput标签。在数据库内,我们实际保存的是一个字符串类型,默认最大长度100,可以通过max_length参数自定义。真实的图片是保存在服务器的文件系统内的。
height_field参数:保存有图片高度信息的模型字段名。width_field参数:保存有图片宽度信息的模型字段名。
使用Django的ImageField需要提前安装pillow模块,pip install pillow即可。
使用FileField或者ImageField字段的步骤:
在settings文件中,配置MEDIA_ROOT,作为你上传文件在服务器中的基本路径(为了性能考虑,这些文件不会被储存在数据库中)。再配置个MEDIA_URL,作为公用URL,指向上传文件的基本路径。请确保Web服务器的用户账号对该目录具有写的权限。
添加FileField或者ImageField字段到你的模型中,定义好upload_to参数,文件最终会放在MEDIA_ROOT目录的“upload_to”子目录中。
所有真正被保存在数据库中的,只是指向你上传文件路径的字符串而已。可以通过url属性,在Django的模板中方便的访问这些文件。例如,假设你有一个ImageField字段,名叫mug_shot,那么在Django模板的HTML文件中,可以使用{{object.mug_shot.url}}来获取该文件。其中的object用你具体的对象名称代替。
可以通过name和size属性,获取文件的名称和大小信息。

24、FilePathField —选择指定目录按限制规则选择文件,有三个参数可选, 其中”path”必需的,这三个参数可以同时使用, 参数描述:
path:必需参数,一个目录的绝对文件系统路径。 FilePathField 据此得到可选项目。 Example: “/home/images”;
match:可选参数, 一个正则表达式, 作为一个字符串, FilePathField 将使用它过滤文件名。 注意这个正则表达式只会应用到 base filename 而不是路径全名。 Example: “foo。\。txt^”, 将匹配文件 foo23.txt 却不匹配 bar.txt 或 foo23.gif;
recursive:可选参数, 是否包括 path 下全部子目录,True 或 False,默认值为 False。
match 仅应用于 base filename, 而不是路径全名。 如:FilePathField(path=”/home/images”, match=”foo.
”, recursive=True)…会匹配 /home/images/foo.gif 而不匹配 /home/images/foo/bar.gif
25、FileField —文件上传字段。 要求一个必须有的参数: upload_to, 一个用于保存上载文件的本地文件系统路径。 这个路径必须包含 strftime formatting, 该格式将被上载文件的 date/time 替换(so that uploaded files don’t fill up the given directory)。在一个 model 中使用 FileField 或 ImageField 需要以下步骤:在你的 settings 文件中, 定义一个完整路径给 MEDIA_ROOT 以便让 Django在此处保存上传文件。 (出于性能考虑,这些文件并不保存到数据库。) 定义 MEDIA_URL 作为该目录的公共 URL。 要确保该目录对 WEB 服务器用户帐号是可写的。在你的 model 中添加 FileField 或 ImageField, 并确保定义了 upload_to 选项,以告诉 Django 使用 MEDIA_ROOT 的哪个子目录保存上传文件。你的数据库中要保存的只是文件的路径(相对于 MEDIA_ROOT)。 出于习惯你一定很想使用 Django 提供的 get__url 函数。举例来说,如果你的 ImageField 叫作 mug_shot, 你就可以在模板中以 {{ object。get_mug_shot_url }} 这样的方式得到图像的绝对路径。
26、PhoneNumberField —一个带有合法美国风格电话号码校验的 CharField(格式:XXX-XXX-XXXX)
27、USStateField —美国州名缩写,由两个字母组成(天朝人民无视)。
28、XMLField —XML字符字段,校验值是否为合法XML的 TextField,必须提供参数:
schema_path:校验文本的 RelaxNG schema 的文件系统路径。

二、常用选项参数意义

1、null 数据库中字段是否可以为空(null=True)
2、db_column 数据库中字段的列名(db_column=“test”)
3、db_tablespace
4、default 数据库中字段的默认值
5、primary_key 数据库中字段是否为主键(primary_key=True)
6、db_index 数据库中字段是否可以建立索引(db_index=True)
7、unique 数据库中字段是否可以建立唯一索引(unique=True)
8、unique_for_date 数据库中字段【日期】部分是否可以建立唯一索引
9、unique_for_month 数据库中字段【月】部分是否可以建立唯一索引
10、unique_for_year 数据库中字段【年】部分是否可以建立唯一索引
11、auto_now 更新时自动更新当前时间
12、auto_now_add 创建时自动更新当前时间
13、verbose_name Admin中显示的字段名称
14、blankAdmin 中是否允许用户输入为空表单提交时可以为空
15、editableAdmin 中是否可以编辑
16、help_textAdmin 中该字段的提示信息
17choicesAdmin 中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作

error_messages自定义错误信息(字典类型),从而定制想要显示的错误信息;
字典健:null,blank,invalid,invalid_choice,unique,andunique_for_date
如:{‘null’:“不能为空.”,‘invalid’:‘格式错误’}

18、validators 自定义错误验证(列表类型),从而定制想要的验证规则

用Open Badges标准构建企业级认可系统 Open Badges是一种基于W3C标准的数字徽章技术,通过JSON-LD元数据、JWT签名验证与去中心化颁发者模型,实现成就的可验证、可携带与跨平台展示。其核心原理在于将‘认可’从中心化通知升级为具备身份锚点和证据链的数字凭证,技术价值体现在隐私保护(如邮箱哈希)、业务对齐(OKR关联)与系统互操作性(如LinkedIn/PyPI集成)。典型应用场景包括技术团队隐性贡献显性化、开源社区贡献认证、HR人才档案增强等。本文以Django+uWSGI+Nginx落地实践为例,详解如何将Open Badges标 阅读详情

相关推荐

PyCon 2016 Python工程化实战:从类型提示到Docker分层落地

Python作为动态语言,其工程化演进始终围绕‘可维护性’与‘可部署性’两大核心展开。随着Python 3.5正式引入async/await、typing模块及标准协议支持,静态类型检查、异步IO和构建优化不再停留于理论,而成为CI/CD流水线中必须应对的现实挑战。类型提示正从开发文档升级为CI门禁机制,mypy集成显著降低运行时异常;异步编程需突破WSGI范式束缚,依赖事件循环适配或ASGI服务器重构;Docker镜像分层策略直接影响构建速度与发布效率,pip安装位置决定缓存复用成败。这些技术实践共同指向

weixin_30882895的博客 409

django 数据模型常用字段类型

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

无笺札记 3428

Django基础教程(三十)Django模型的数据字段之布尔类字段:Django布尔字段真香警告:用BooleanField告别“薛定谔的True”,不做摸鱼程序员!

在Django模型的宇宙里,BooleanField看似是个非黑即白的“老实人”,实则暗藏玄机!它只有True和False两副面孔,却常因“空值”问题让新手程序员当场懵圈。本文将带你深扒它的底细,从基础用法到核心参数null、blank、default的微妙区别,再到被遗忘的“墙头草”NullBooleanField。我们用一个“摸鱼打卡系统”的完整示例,手把手教你如何优雅地设计“是否在摸鱼”、“是否完成工作”等字段,避开所有坑,让你的代码逻辑清晰如镜。从此,True or False,不再是问题!

jxf_jxfcsdn的博客 954

django-模型类字段类型

模型类属性的命名限制 字段的类型 django中的所有与数据库对应的字段类型 都定义在了 django.db.models包中 要用的时候直接导入就可以使用 自动增长的 布尔类型 两种字段 字符串数据类型 整数类型 小数数据类型 两者的精确度不同 FloatField的精确度没有DecimalField高 涉及到金钱方面,使用DecimalField 例如 日期类型-年月日 ...

pyhui的技术博客 1687

Django PostgreSQL 数据库模型示例

记住,在使用 PostgreSQL 时,你还可以利用其丰富的功能和特性,如全文搜索、地理空间数据处理等。在 Django 中,我们可以使用多种数据库后端,其中之一是 PostgreSQL。本文将演示如何在 Django 中使用 PostgreSQL 数据库,并提供相应的模型示例。在上面的模板中,我们使用 Django 模板语言来循环遍历所有的博客文章,并显示它们的标题、内容和创建时间。一旦完成了这些配置步骤,我们就可以创建我们的模型了。现在,当访问相应的 URL 时,将显示所有的博客文章列表。

TnwhTypescript的博客 270

银河麒麟V10系统下,手把手解决Ollama安装报错‘GLIBCXX_3.4.25 not found’

本文详细介绍了在银河麒麟V10系统下解决Ollama安装报错‘GLIBCXX_3.4.25 not found’的实战指南。通过隔离编译新版libstdc++、环境变量引导和服务化封装等安全方案,确保在不破坏系统稳定性的前提下顺利运行Ollama,适用于国产操作系统与AI工具的兼容性需求。

weixin_42556197的博客 484

django4.1 oracle19c默认字段nvarchar改成varchar2

django oracle19c 修改nvarchar 改成varchar2

hayratjanmmmm的博客 400

Vue项目实战:5分钟搞定高德地图离线部署(附避坑指南)

本文详细介绍了在Vue项目中实现高德地图离线部署的完整方案。针对内网或网络隔离环境,通过获取并改造JSAPI文件、下载组织地图瓦片数据,并集成vue-amap组件,实现地图功能的本地化运行。文中提供了核心代码、避坑指南及性能优化建议,帮助开发者快速构建稳定可靠的离线地图应用。

data3的博客 935

【备忘】Django 常用命令及最佳实践

注意:本文基于 Django 1.8.2 版本   生成数据库迁移脚本(python 脚本) python manage.py makemigrations polls  说明:polls 是你的应用名字,运行该命令时需要根据你的应用名字进行调整   查看该次迁移需要执行的 SQL 语句(只查看语句,并不应用到数据库上): python manage.py sqlmigrate ...

dongwei_6688的专栏 158

避开地图定位的坑:手把手教你处理GCJ-02和WGS-84坐标转换(2023最新版)

本文深入解析了GCJ-02与WGS-84坐标系转换的核心原理与常见误区,提供了详细的代码实现与精度控制方法。针对地图定位开发中的实际痛点,文章重点阐述了如何通过迭代逼近法实现高精度坐标转换,并给出了误差测试与业务场景下的工程实践指南,帮助开发者有效规避定位漂移等问题。

lstm7chronicler的博客 1170

MTK平台高效部署Qwen2.5大模型:从转换到推理全流程解析

本文详细解析了在联发科(MTK)NeuroPilot平台上高效部署Qwen2.5大模型的全流程。内容涵盖从环境搭建、模型转换、量化优化到编译部署与上机推理的完整步骤,重点分享了模型转换与模型运行的关键实践与避坑指南,旨在帮助开发者将大语言模型成功集成至移动及边缘设备。

zeta9的博客 378

django 模型里面自定义定长字段类

from django.db import models # Create your models here. class CCharField(models.Field): def __init__(self, max_length, *args, **kwargs): self.max_length = max_length super(CCharFi...

ACBC12345的博客 1693

AI时代敏捷开发新范式——意图驱动开发IDD

具体的功能代码、单元测试、集成测试用例,以及最终可运行的、支持PlantUML的Markdown转Word工具新版本。:业务方(如技术文档团队)反馈,现有的Markdown转Word工具在处理包含PlantUML代码块的文档时,无法正确生成图表,导致技术方案、架构图等关键信息丢失,严重影响了文档交付质量和团队效率。这不仅带来了交付周期显著缩短、资源效能倍增的可观收益,更深远的意义在于,它描绘了未来软件工业化、智能化的新图景:一个由精准意图驱动、AI自主执行、人类智慧引领的敏捷、高效、高质的新世界。

LiuJunjiang的专栏 552

Django 迁移错误 Cannot add foreign key constraint,字段类型自动变成Bigint

今天在数据迁移的时候,一直报错 Cannot add foreign key constraint。

日常bug 3675

在国产麒麟系统上,用Postfix和Dovecot手搓一个内部邮件服务器(附Foxmail配置)

本文详细介绍了在国产麒麟系统上使用Postfix和Dovecot搭建内部邮件服务器的完整流程,包括系统准备、核心配置、安全加固及客户端适配。针对国产环境的特殊需求,提供了依赖包适配、配置差异和Foxmail客户端配置的实用解决方案,助力企业实现高效内部协作。

weixin_33722405的博客 371

Linux系统中u-boot启动流程分析(详解)

代码部分,具体如下;

嵌入式技术开发 1992

Django 模型字段类型和字段参数总结

Django 模型字段类型和字段参数总结 1. models.AutoField # 作用说明:默认生成列名为 id 的列,并设置为主键 # 数据类型:int(11) # 必备参数:primary_key = True 作为主键存在 # 主键django会默认自带 ColName = models.AutoField(primary_key = True) 2. models.CharField # 作用说明:字符串字段,长度小于255 # 数据类型:varchar(50) # 必备参数:m

qq_48082548的博客 7840

AI Agent开发第85课-DeepSeek-OCR 安装全指南:从 Transformers 到 vLLM,手把手教你跑通企业级 OCR

本文系统讲解 DeepSeek-OCR 的两种部署方式——基于 Hugging Face Transformers 的标准推理与基于 vLLM 的高性能加速推理。详细说明 CUDA 与 PyTorch 版本匹配、环境验证、依赖安装等关键细节,并提供可直接运行的完整代码示例。无论你是单卡调试还是高并发服务部署,都能在这里找到清晰路径。

打造全国最全的AI Agent开发知识领域的博客 2543

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

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

Chimengmeng的博客 1685

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Django模型的字段类型

字段类型用以指定数据库的数据类型,例如Integer、VARCHAR和TEXT这几种比较常用的数据类型。在Django模型定义中,字段类型均派生自Field类的实例。Django框架中的Field类是一个抽象类,专门用于定义数据库表的列表项。Django模型中最重要并且也是唯一必须执行的就是字段定义。字段在类中进行定义,对应于实体数据库的字段。另外,定义模型字段名时为了避免冲突,不建议使用模型API中已经定义的关键字。Django模型一共内置了多种字段类型,基本能够满足一般的设计需求。

夏天又到了的专栏 1413

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Django web 开发(四) - Django项目实践(四)-用户管理

Django-web开发 python项目实践

每天进步亿点点 6095

visio安装包

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

【Django】学习

以下内容只是在阅读django官方文档时简单理解后的记录,具体可以看文档。

fenfyue的博客 385

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

因为一个博客网站的文章可以有成千上百,但是分类目录和标签不会太多,如果在文章表中定义一个用来存储标签或者分类目录的字段,字段里存放的是目录和标签的字符串,那么可能会产生很多冗余信息。还可以定义一个标签的表,专门用来存储文章涉及到的标签。时间类型分为三种,Date是年月日的形式,DateTime是年月日时分秒的形式,第三种表示一段时间,在数据表中是Int类型,它的底层是通过python的timedelta实现的。中一个模型类对应的是数据库中的一张表,对象对应的是数据库中的记录,属性则对应的是字段。

不许人间丶见白头 527

Django数据库字段及参数

【代码】Django数据库字段及参数。

Pert的博客 460

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

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

python 熊猫 1386

django33全栈班2025年006 常用基础数据类型

通过前面的学习, 我们已经掌握了基本的输入输出语法, 还学会了一个非常简单易用的和浏览器交互的框架, pywebio3.那么接下来学习什么呢?为了让同学们有一个整体的目标, 我们来梳理一下接下来要学习的东西, 以及要做的东西.到目前为止, 我们就把Python基础常用的数据结构了解得差不多了.了解了这些常用数据结构的类型, 如何声明等基础知识点以后, 我们就可以继续学习其他知识点了.在学其他知识点的过程中, 有了这些基础数据结构, 做练习起来也很更加的流畅.

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 1004
上一篇: 正则表达式--备忘录
下一篇: python3.8究竟更新了什么?
FatTigerx
博客等级 码龄8年 5粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值