zoukankan      html  css  js  c++  java
  • Django之ORM属性类型和约束条件

     

             

     

    ORM属性类型:

    1. CharField

            字符串字段, 用于较短的字符串.

            CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的最大字符数.

     

    2. IntegerField

           #用于保存一个整数.

     

    3.FloatField

    一个浮点数,对应sql双精度

     

    4. AutoField

            一个 IntegerField, 添加记录时它会自动增长. 你通常不需要直接使用这个字段;

            自定义一个主键:my_id=models.AutoField(primary_key=True)

            如果你不指定主键的话,系统会自动添加一个主键字段到你的 model.

     

    5. DateField

            一个日期字段. 共有下列额外的可选参数:

            Argument    描述

            auto_now    当对象被保存时,自动将该字段的值设置为当前时间.通常用于表示 "last-modified" 时间戳.

            auto_now_add    当对象首次被创建时,自动将该字段的值设置为当前时间.通常用于表示对象创建时间.

            (仅仅在admin中有意义...)

     

    6. DateTimeField

             一个日期时间字段. 类似 DateField 支持同样的附加选项.

     

     

    7. DecimalField

            一个浮点数. 必须 提供两个参数:

            

            参数    描述

            max_digits    总位数(不包括小数点和符号)

            decimal_places    小数位数

                    举例来说, 要保存最大值为 999 (小数点后保存2),你要这样定义字段:

                     

                    models.DecimalField(..., max_digits=5, decimal_places=2)

                    要保存最大值一百万(小数点后保存10)的话,你要这样定义:

                    

                    models.DecimalField(..., max_digits=17, decimal_places=10) #max_digits大于等于17就能存储百万以上的数了

                    admin 用一个文本框(<input type="text">)表示该字段保存的数据.

     

     

    8. BooleanField

            A true/false field. admin checkbox 来表示此类字段.

     

    9. TextField

            一个容量很大的文本字段.

            admin 用一个 <textarea> (文本区域)表示该字段数据.(一个多行编辑框).

     

    10. EmailField

            一个带有检查Email合法性的 CharField,不接受 maxlength 参数.

     

     

    11. ImageField

            类似 FileField, 不过要校验上传对象是否是一个合法图片.#它有两个可选参数:height_fieldwidth_field,

            如果提供这两个参数,则图片将按提供的高度和宽度规格保存.   

     

    12. FileField

         一个文件上传字段.

         要求一个必须有的参数: upload_to, 一个用于保存上载文件的本地文件系统路径. 这个路径必须包含 strftime #formatting,

         该格式将被上载文件的 date/time

         替换(so that uploaded files don't fill up the given directory).

         admin 用一个<input type="file">部件表示该字段保存的数据(一个文件上传部件) .

     

         注意:在一个 model 中使用 FileField ImageField 需要以下步骤:

                1)在你的 settings 文件中, 定义一个完整路径给 MEDIA_ROOT 以便让 Django在此处保存上传文件.

                (出于性能考虑,这些文件并不保存到数据库.) 定义MEDIA_URL 作为该目录的公共 URL. 要确保该目录对

                 WEB服务器用户帐号是可写的.

                2) 在你的 model 中添加 FileField ImageField, 并确保定义了 upload_to 选项,以告诉 Django

                 使用 MEDIA_ROOT 的哪个子目录保存上传文件.你的数据库中要保存的只是文件的路径(相对于 MEDIA_ROOT).

                 出于习惯你一定很想使用 Django 提供的 get_<#fieldname>_url 函数.举例来说,如果你的 ImageField

                 叫作 mug_shot, 你就可以在模板中以 {{ object.#get_mug_shot_url }} 这样的方式得到图像的绝对路径.

     

    13. URLField

          用于保存 URL. verify_exists 参数为 True (默认), 给定的 URL 会预先检查是否存在( URL是否被有效装入且

          没有返回404响应).

          admin 用一个 <input type="text"> 文本框表示该字段保存的数据(一个单行编辑框)

     

    14. SlugField

           "Slug" 是一个报纸术语. slug 是某个东西的小小标记(短签), 只包含字母,数字,下划线和连字符.#它们通常用于URLs

           若你使用 Django 开发版本,你可以指定 maxlength. maxlength 未指定, Django 会使用默认长度: 50.  #

           以前的 Django 版本,没有任何办法改变50 这个长度.

           这暗示了 db_index=True.

           它接受一个额外的参数: prepopulate_from, which is a list of fields from which to auto-#populate

           the slug, via JavaScript,in the object's admin form: models.SlugField

           (prepopulate_from=("pre_name", "name"))prepopulate_from 不接受 DateTimeFields.

     

    15. XMLField

            一个校验值是否为合法XML TextField,必须提供参数: schema_path, 它是一个用来校验文本的 RelaxNG schema #的文件系统路径.

     

    16. FilePathField

            可选项目为某个特定目录下的文件名. 支持三个特殊的参数, 其中第一个是必须提供的.

            参数    描述

            path    必需参数. 一个目录的绝对文件系统路径. FilePathField 据此得到可选项目.

            Example: "/home/images".

            match    可选参数. 一个正则表达式, 作为一个字符串, FilePathField 将使用它过滤文件名.

            注意这个正则表达式只会应用到 base filename 而不是

            路径全名. Example: "foo.*.txt^", 将匹配文件 foo23.txt 却不匹配 bar.txt foo23.gif.

            recursive可选参数.要么 True 要么 False. 默认值是 False. 是否包括 path 下面的全部子目录.

            这三个参数可以同时使用.

            match 仅应用于 base filename, 而不是路径全名. 那么,这个例子:

            FilePathField(path="/home/images", match="foo.*", recursive=True)

            ...会匹配 /home/images/foo.gif 而不匹配 /home/images/foo/bar.gif

     

    17. IPAddressField

            一个字符串形式的 IP 地址, (i.e. "24.124.1.30").

     

    18. CommaSeparatedIntegerField

            用于存放逗号分隔的整数值. 类似 CharField, 必须要有maxlength参数.

     

    18. NullBooleanField

           类似 BooleanField, 不过允许 NULL 作为其中一个选项. 推荐使用这个字段而不要用 BooleanField null=True 选项

           admin 用一个选择框 <select> (三个可选择的值: "Unknown", "Yes" "No" ) 来表示这种字段数据.

     

     

    ORM属性约束条件:

    1.null

    如果为TrueDjango 将用NULL 来在数据库中存储空值。 默认值是 False.

     

    2.blank ModelForm验证的依据)

    如果为True,该字段允许不填。默认为False

    要注意,这与 null 不同。null纯粹是数据库范畴的,而 blank 是数据验证范畴的。

    如果一个字段的blank=True,表单的验证将允许该字段是空值。如果字段的blank=False,该字段就是必填的。

     

    3.max_lenght

    最大长度

     

    4.default

    字段的默认值。可以是一个值或者可调用对象。如果可调用 ,每有新对象被创建它都会被调用,如果你的字段没有设置可以为空,那么将来如果我们后添加一个字段,这个字段就要给一个default

     

    5.primary_key

    如果为True,那么这个字段就是模型的主键。如果你没有指定任何一个字段的primary_key=True

    Django 就会自动添加一个IntegerField字段做为主键,所以除非你想覆盖默认的主键行为,

    否则没必要设置任何一个字段的primary_key=True

     

    6.unique

    如果该值设置为 True, 这个数据字段的值在整张表中必须是唯一的

     

    7.choices

    由二元组组成的一个可迭代对象(例如,列表或元组),用来给字段提供选择项。 如果设置了choices ,默认的表单将是一个选择框而不是标准的文本框,<br>而且这个选择框的选项就是choices 中的选项。

     

    8.db_index

      如果db_index=True 则代表着为此字段设置数据库索引。

     

     

     

    DatetimeFieldDateFieldTimeField这个三个时间字段,都可以设置如下属性。

    9.auto_now_add

        配置auto_now_add=True,创建数据记录的时候会把当前时间添加到数据库。

     

    10.auto_now

        配置上auto_now=True,每次更新数据记录的时候会更新该字段,标识这条记录最后一次的修改时间。

     

           

     

       

    ORM字段与数据库实际字段的对应关系:

       '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)',

     

     

           

     

  • 相关阅读:
    java 在线网络考试系统源码 springboot mybaits vue.js 前后分离跨域
    springboot 整合flowable 项目源码 mybiats vue.js 前后分离 跨域
    flowable Springboot vue.js 前后分离 跨域 有代码生成器 工作流
    Flowable 工作流 Springboot vue.js 前后分离 跨域 有代码生成器
    java 企业 网站源码 后台 springmvc SSM 前台 静态化 代码生成器
    java 进销存 商户管理 系统 管理 库存管理 销售报表springmvc SSM项目
    基于FPGA的电子计算器设计(中)
    基于FPGA的电子计算器设计(上)
    FPGA零基础学习:SPI 协议驱动设计
    Signal tap 逻辑分析仪使用教程
  • 原文地址:https://www.cnblogs.com/open-yang/p/11222245.html
Copyright © 2011-2022 走看看