当前位置: 移动技术网 > IT编程>脚本编程>Python > Django model 字段类型及选项解析

Django model 字段类型及选项解析

2019年07月19日  | 移动技术网IT编程  | 我要评论

中国移动内蒙古网上营业厅,北京转让,石城教育网

转载自:https://blog.csdn.net/jamespaul32/article/details/80775211

model field 类型

  • 1、autofield()
    自增的integerfield,通常不用自己设置,若没有设置主键,django会自动添加它为主键字段,django会自动给每张表添加一个自增的primary key。

  • 2、bigintegerfield
    64位整数, -9223372036854775808 到 9223372036854775807。默认的显示widget 是 textinput.

  • 3、binaryfield ( django 1.6 版本新增 )
    存储二进制数据。不能使用 filter 函数获得 queryset

  • 4、booleanfield()
    true/false,默认的widget 是 checkboxinput。
    如果需要置空,则必须用 nullbooleanfield 代替。
    django 1.6 修改:booleanfield 的默认值 由 false 改为 none,在 default 属性未设置的情况下。

  • 5、charfield(max_length=none[, **options])
    储存字符串。必须有 max_length 参数指定长度。作用于数据层级和django数据验证层级。默认的form widget 是 textinput如果字符串巨长,推荐使用 textfield。

  • 6、commaseparatedintegerfield(max_length=none[, **options])
    存放由逗号间隔的整数序列。必须有 max_length 参数。

  • 7、datefield
    日期,与python里的datetime.date 实例同。有以下几个可选的选项,均为bool类型:
    datefield.auto_now: 每次执行 save 操作的时候自动记录当前时间,常作为最近一次修改的时间 使用。注意:总是在执行save 操作的时候执行,无法覆盖。
    datefield.auto_now_add: 第一次创建的时候添加当前时间。常作为 创建时间 使用。注意:每次create 都会调用。
    默认的form widget 是 textinput。
    注意:设置auto_now 或者 auto_now_add 为 true 会导致当前自动拥有 editable=false 和 blank = true 设置。

  • 8、datetimefield([auto_now=false, auto_now_add=false, **options])
    日期+时间。与python里的 datetime.datetime 实例同。常用附加选项和datefield一样。
    默认 form widget 是一个 textinput

  • 9、decimalfield(max_digits=none,decimal_places=none[, **options])
    用decimal实例表示固定精度的十进制数的字段,有两个必须参数,max_digits数字允许的最大位数,decimal_places小数的最大位数。django后台用表示该字段, 通常用来表示金额

  • 10、emailfield([maxlength=75, **options])
    在 charfield 基础上附加了 邮件地址合法性验证。不需要强制设定 max_length
    注意:当前默认设置 max_length 是 75,虽然已经不符合标准,但未了向前兼容,未修改。

  • 11、filefield(upload_to=none[, max_length=100, **options])
    文件上传字段。不支持 primary_key 和 unique 选项。否则会报 typeerror 异常。
    必须设置 filefield.upload_to 选项,这个是 本地文件系统路径,附加在 media_root 设置的后边,也就是 media_root 下的子目录相对路径。默认的form widget 是 fileinput。
  • 12、floatfield
    与 python 里的 float 实例相同,默认的 form widget 是 textinput。
    虽然 floatfield 与 decimalfield 都是表示实数,但却是不同的表现形式,floatfield 用的是 python d float 类型,但是 decimalfield 用的却是 decimal 类型。区别可见:
  • 13、imagefield([upload_to=none, height_field=none, width_field=none, max_length=100, **options])
    在 filefield 基础上加上是否是合法图片验证功能的一个类型。
    除了 filefield 有的属性外,imagefield 另有 height 和 width 属性。
    注意:需要安装 pil 或者 pillow 模块。在数据库中同样表现为 varchar(100),可通过 max_length 改大小。
  • 14、integerfield
    整数,默认的form widget 是 textinput。
  • 15、ipaddressfield
    ip地址,字符串类型,如 127.0.0.1。默认 form widget 是 textinput。
  • 16、genericipaddressfield
    ip v4和ip v6地址表示,ipv6遵循rfc 4291section 2.2,
  • 17、nullbooleanfield
    可以包含空值的布尔类型,相当于设置了null=true的booleanfield。
  • 18、positivesmallintegerfield
    正短整数或0类型,类似于positiveintegerfield,取值范围依赖于数据库特性,[0 ,32767]的取值范围对django所支持的数据库都是安全的。
  • 19、positiveintegerfield
    正整数或0类型,取值范围为[0 ,2147483647]
  • 20、slugfield
    只能包含字母,数字,下划线和连字符的字符串,通常被用于urls表示。可选参数max_length=50,prepopulate_from用于指示在admin表单中的可选值。db_index,默认为true。
  • 21.smallintegerfield
    小整数字段,类似于integerfield,取值范围依赖于数据库特性,[-32768 ,32767]的取值范围对django所支持的数据库都是安全的。
  • 22、textfield
    大文本,巨长的文本。默认的 form widget 是 textarea。
  • 23、timefield
    时间,对应python的datetime.time
  • 24、urlfield
    加了 url 合法性验证的 charfield。
    默认的 form widget 是 textinput。
    默认max_length=200,可修改。
  • 25、filepathfield(path=none[, match=none, recursive=false, max_length=100, options])
    他是一个charfield,用来选择文件系统下某个目录里面的某些文件,它有三个专有参数,只有path是必须的。path是一个目录的绝对路径,match是一个正则表达式字符串,用来过滤文件名称;recursive为bool,指定是否包含path下的子目录。

注意,如果使用 mysqldb 1.2.1p2 和 utf-8_bin 编码,会有一些问题。具体问题未分析,可自行避开。

field 选项

  • null
    boolean 值,缺省设置为false。通常不将其用于字符型字段上,比如charfield,textfield上。字符型字段如果没有值会返回空字符串。

  • blank
    boolean 值,该字段是否可以为空。如果为假,则必须有值。

  • choices
    元组值,一个用来选择值的2维元组。第一个值是实际存储的值,第二个用来方便进行选择。如sex_choices=((‘f’,’female’),(‘m’,’male’),)

  • db_column
    string 值,指定当前列在数据库中的名字,不设置,将自动采用model字段名;

  • db_index
    boolean 值,如果为true将为此字段创建索引;

  • default
    给当前字段设定的缺省值,可以是一个具体值,也可以是一个可调用的对象,如果是可调用的对象将每次产生一个新的对象;

  • editable
    boolean 值,如果为假,admin模式下将不能改写。缺省为真;

  • error_messages
    字典,设置默认的出错信息,可覆盖的key 有 null, blank, invalid, invalid_choice, 和 unique。

  • help_text
    admin模式下帮助文档
    form widget 内显示帮助文本。

  • primary_key
    设置主键,如果没有设置django创建表时会自动加上:id = meta.autofield(‘id’, primary_key=true)
    primary_key=true implies blank=false, null=false and unique=true. only one primary key is allowed on an object.

  • radio_admin
    用于 admin 模式下将 select 转换为 radio 显示。只用于 foreignkey 或者设置了choices

  • unique
    boolean值,数据是否进行唯一性验证;

  • unique_for_date
    字符串类型,值指向一个datetimefield 或者 一个 datefield的列名称。日期唯一,如下例中系统将不允许title和pub_date两个都相同的数据重复出现
    title = meta.charfield( maxlength=30, unique_for_date=’pub_date’ )

  • unique_for_month / unique_for_year
    用法同上

  • verbose_name
    string类型。更人性化的列名。

  • validators
    有效性检查。无效则抛出 django.core.validators.validationerror 异常。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网