首页 > 其他分享 >django模型的字段类型简介

django模型的字段类型简介

时间:2022-11-26 17:48:57浏览次数:64  
标签:文件 简介 模型 保存 django 参数 字符串 Django ImageField

django基础】django模型的字段类型简介

说实在的,每一个框架基本都会用一套orm,只是各有各的标准,每次用起来都挺费劲的,所以还是要单独整理下

  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 —日期类型 datetimeDateField的参数
  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),
}
 
  1. IPAddressField —字符串类型(ip4正则表达式) 一个字符串形式的 IP 地址, (如 “202.1241.30″)。
  2. GenericIPAddressField —字符串类型(ip4和ip6是可选的) 参数protocol可以是:both、ipv4、ipv6 验证时,会根据设置报错
  3. NullBooleanField —允许为空的布尔类型 类似 BooleanField, 不过允许 NULL 作为其中一个选项。 推荐使用这个字段而不要用 BooleanFieldnull=True 选项。 admin 用一个选择框      (三个可选择的值: “Unknown”“Yes”“No”) 来表示这种字段数据。
  4. PositiveIntegerField —正Integer 类似 IntegerField, 但取值范围为非负整数(这个字段应该是允许0值的…可以理解为无符号整数)
  5. PositiveSmallIntegerField —正smallInteger 正小整型字段,类似 PositiveIntegerField, 取值范围较小(数据库相关)SlugField“Slug” 是一个报纸术语。 slug 是某个东西的小小标记(短签), 只包  含字母,数字,下划线和连字符。它们通常用于URLs。 若你使用 Django 开发版本,你可以指定 maxlength。 若 maxlength 未指定, Django 会使用默认长度: 50,它接受一个额外的参数:
    prepopulate_from: 来源于slug的自动预置列表
  6. SlugField —减号、下划线、字母、数字 它们通常用于URLs
  7. SmallIntegerField —数字 数据库中的字段有:tinyintsmallintintbigint. 类似 IntegerField, 不过只允许某个取值范围内的整数。(依赖数据库)
  8. TextField —字符串=longtext ,一个容量很大的文本字段, admin 管理界面用 多行编辑框表示该字段数据。
  9. TimeField —时间 HH:MM[:ss[.uuuuuu]] 时间字段,类似于 DateFieldDateTimeField
  10. URLField —字符串,地址正则表达式 用于保存URL。若 verify_exists 参数为 True (默认), 给定的 URL 会预先检查是否存在(即URL是否被有效装入且没有返回404响应).
  11. BinaryField —二进制
  12. ImageField —图片 类似 FileField, 不过要校验上传对象是否是一个合法图片。用于保存图像文件的字段。其基本用法和特性与FileField一样,只不过多了两个属性heightwidth。默认情况下,该字段在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文件中,可以使用{undefined{object.mug_shot.url}}来获取该文件。其中的object用你具体的对象名称代替。
    可以通过namesize属性,获取文件的名称和大小信息。
  13. 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
  14. FileField —文件上传字段。 要求一个必须有的参数: upload_to, 一个用于保存上载文件的本地文件系统路径。 这个路径必须包含strftime formatting, 该格式将被上载文件的 date/time 替换(so that uploaded files don’t fill up the given directory)。在一个 model 中使用 FileFieldImageField 需要以下步骤:在你的 settings 文件中, 定义一个完整路径给 MEDIA_ROOT 以便让 Django在此处保存上传文件。 (出于性能考虑,这些文件并不保存到数据库。) 定义 MEDIA_URL 作为该目录的公共 URL。 要确保该目录对 WEB 服务器用户帐号是可写的。在你的 model 中添加 FileFieldImageField, 并确保定义了 upload_to 选项,以告诉 Django 使用 MEDIA_ROOT 的哪个子目录保存上传文件。你的数据库中要保存的只是文件的路径(相对于 MEDIA_ROOT)。 出于习惯你一定很想使用 Django 提供的 get__url 函数。举例来说,如果你的 ImageField 叫作 mug_shot, 你就可以在模板中以 {undefined{ object。get_mug_shot_url }}这样的方式得到图像的绝对路径。
  15. PhoneNumberField —一个带有合法美国风格电话号码校验的 CharField(格式:XXX-XXX-XXXX)
  16. USStateField —美国州名缩写,由两个字母组成(天朝人民无视)。
  17. XMLField —XML字符字段,校验值是否为合法XML的 TextField,必须提供参数:
    schema_path:校验文本的 RelaxNG schema 的文件系统路径。

标签:文件,简介,模型,保存,django,参数,字符串,Django,ImageField
From: https://www.cnblogs.com/clark1990/p/16927863.html

相关文章

  • Linux面试题2:网络IO模型 & IO多路复用
    网络IO先确定一下范围,我们讨论的都是网络IO,现阶段计算机早已经从CPU密集型转换成网络IO密集型,所以网络io的类型对于服务响应而言更重要。五种IO模型依据Unix的IO分类,网......
  • java——数据库连接池——概念简介
        1.概念:其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器......
  • K8s——简介
    Kubernetes是一个自动化的容器编排平台,它负责应用的部署、应用的弹性以及应用的管理,这些都是基于容器的。容器部署时代容器类似于VM,但是具有被放宽的隔离属性,可以在应......
  • Spring--AOP简介+入门案例
    AOP简介面向切面编程:在不惊动原始设计的基础上,进行功能增强各个要应用该功能的对象叫做连接点,那个功能叫做通知,表面上的代码没有发生变化,私下里发生变化的连接点,会出现切......
  • AI模型部署典型策略
    【编者按:模型部署是AI开发生产流程中的重要步骤。对于许多组织而言,选择最佳的模型部署策略以扩展到生产级系统,都是一项复杂且具有挑战的工作。今天IDP将和大家一同,跟随Yasha......
  • Python数据分析与科学计算之NumPy超细教程之第1部分 NumPy简介
    1.学习NumPy前置知识点1、Python基础语言2、重点Python内置数据结构:列表(list)、字符串(str)、元组(tuple)、集合(set)和字典(dict)。3、序列的索引和切片操作。4、列表推导式、集合推......
  • 从多线程模型理解并发
    学习完各种线程模型之后,试图从线程模型出发去理解设计者设计这些锁,多线程工具的时候的思想https://articles.zsxq.com/id_rk2jkvxq1n4d.htmlMESA管程模型提到多线程就......
  • 1529_AURIX_TriCore内核架构之编程模型
    全部学习汇总:​​GreyZhang/g_tricore_architecture:somelearningnoteabouttricorearchitecture.(github.com)​​继续看一下内核编程模型,看看是否能够对于所有芯片......
  • Django 迁移文件报错django.db.migrations.exceptions.InconsistentMigrationHistory;O
    Django项目在把Git上项目拉到本地后,运行完python manage.py makemigrations后,再运行python manage.py migrate,出现报错:django.db.migrations.exceptions.Inconsis......
  • PGL图学习之图神经网络ERNIESage、UniMP进阶模型[系列八]
    PGL图学习之图神经网络ERNIESage、UniMP进阶模型[系列八]原项目链接:fork一下即可:https://aistudio.baidu.com/aistudio/projectdetail/5096910?contributionType=1相关项......