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 类型。区别可见:http://docs.python.org/2.7/library/decimal.html#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 编码,会有一些问题https://docs.djangoproject.com/en/dev/ref/databases/#mysql-collation。具体问题未分析,可自行避开。

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 异常。

Django 模型(Model)字段类型级参数详解

1、AutoField

根据可用id自动递增的整数字段。通常不需要直接使用它;如果不指定主键字段,则会自动将主键字段添加到模型中。

2、CharField

用来存储字符串,必须制定范围,如果存储大文本字符串,应当用TextField.

3、DateField

使用Python的datetime.date实例保存的日期。auto_now = True:每次保存对象时,自动设置该字段为当前时间;auto_now_add=True:对象第一次被创建时自动设置当前时间。需要注意的是,自动保存的时间的时区使用的是默认时区。

4、DateTimeField

使用Python的datetime.datetime实例表示的日期和时间。

5、TextField

存储大字符串

6、BigIntegerField

64位的整型数值,从 -2^63 (-9223372036854775808) 到 2^63-1(9223372036854775807)

7、BinaryField

存储二进制码的Field. 只支持bytes 赋值。

8、BooleanField

该字段的默认表单控件是CheckboxInput,如果你需要设置null 值,则使用NullBooleanField 来代替BooleanField。

9、FloatField

用Python的一个float 实例来表示一个浮点数。

10、UUIDField

一个用来存储UUID的字段。使用Python的UUID类。

11、ForeignKey

多对一关系

12、ManyToManyField

多对多关联

13、OneToOneField

一对一关联关系

1、null=True      数据库中字段是否可以为空

2、blank=True         django的 Admin 中添加数据时是否可允许空值

3、primary_key = False

主键,对AutoField设置主键后,就会代替原来的自增 id 列

如果您没有为模型中的任何字段指定primary_key=True, Django将自动添加一个IntegerField来保存主键,所以您不需要在任何字段上设置primary_key=True,除非您想要覆盖默认的主键行为。有关更多信息,请参见自动主键字段。

主键字段是只读的。如果您更改现有对象上的主键值,然后保存它,就会在旧对象旁边创建一个新对象。例如:

from django.db import models

class Fruit(models.Model):

name = models.CharField(max_length=100, primary_key=True)

fruit = Fruit.objects.create(name='Apple')
>>> fruit.name = 'Pear'
>>> fruit.save()
>>> Fruit.objects.values_list('name', flat=True)
<QuerySet ['Apple', 'Pear']>
4、auto_now 和 auto_now_add

auto_now   自动创建---无论添加或修改,都是当前操作的时间

auto_now_add  自动创建---永远是创建时的时间

5、choices

GENDER_CHOICE = (

(u'M', u'Male'),

(u'F', u'Female'),

)
gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
6、max_length      字符串最大长度

7、default        默认值

8、verbose_name Admin         中字段的显示名称

9、name|db_column  数据库中的字段名称

10、unique=True  

不允许重复,例如用户名注册时候是不允许重复的,在username字段里设置,不让重复

11、db_index = True  数据库索引

12、editable=True  在Admin里是否可编辑

13、error_messages=None  

错误提示

把错误提示修改成你想要的报错,这里加个字典来完成 gender = models.CharField(max_length=2,choices = GENDER_CHOICE,error_messages={"错误类型":"错误原因"})

14、auto_created=False  自动创建

15、help_text  在Admin中提示帮助信息

16、validators=[]    提示区间,例如电话号码范围

17、upload-to   文件上传功能 在 FileField 里加入 例如: file = modles.FileField(upload-to = "./upload/"      指明上传的文件防止根目录下的/upload/文件夹下

1. django 模型models 常用字段

        
1、models.AutoField  
  • 自增列 = int(11)
  • 如果没有的话,默认会生成一个名称为 id 的列
  • 如果要显式的自定义一个自增列,必须设置primary_key=True。
 
2、models.CharField  
  • 字符串字段
  •   必须设置max_length参数
 
3、models.BooleanField  
  • 布尔类型=tinyint(1)
  •   不能为空,可添加Blank=True
 
4、models.ComaSeparatedIntegerField  
  • 用逗号分割的数字=varchar
  •   继承CharField,所以必须 max_lenght 参数
 
5、models.DateField
  • 日期类型 date
  •   DateField.auto_now:保存时自动设置该字段为现在日期,最后修改日期
  • DateField.auto_now_add:当该对象第一次被创建是自动设置该字段为现在日期,创建日期。
 
6、models.DateTimeField  
  • 日期时间类型 datetime
  •   同DateField的参数
 
7、models.Decimal  
  • 十进制小数类型 = decimal
  • DecimalField.max_digits:数字中允许的最大位数
  • DecimalField.decimal_places:存储的十进制位数
 
8、models.EmailField  
  •   一个带有检查 Email 合法性的 CharField
 
9、models.FloatField  
  • 浮点类型 = double
 
10、models.IntegerField  
  • 整形
 
11、models.BigIntegerField  
  • 长整形
  •   integer_field_ranges = {
    'SmallIntegerField': (-32768, 32767),
    'IntegerField': (-2147483648, 2147483647),
    'BigIntegerField': (-9223372036854775808, 9223372036854775807),
    'PositiveSmallIntegerField': (0, 32767),
    'PositiveIntegerField': (0, 2147483647),
  }
 
12、models.GenericIPAddressField  
  • 一个带有检查 IP地址合法性的 CharField
 
13、models.NullBooleanField  
  • 允许为空的布尔类型
 
14、models.PositiveIntegerFiel  
  • 正整数
 
15、models.PositiveSmallIntegerField  
  • 正smallInteger
 
16、models.SlugField  
  • 减号、下划线、字母、数字
 
17、models.SmallIntegerField  
  • 数字
  •   数据库中的字段有:tinyint、smallint、int、bigint
 
18、models.TextField  
  • 大文本。默认对应的form标签是textarea。
 
19、models.TimeField  
  • 时间 HH:MM[:ss[.uuuuuu]]
 
20、models.URLField  
  • 一个带有URL合法性校验的CharField。
 
21、models.BinaryField  
  • 二进制
  • 存储二进制数据。不能使用filter函数获得QuerySet。
 
22、models.ImageField   
  • 图片
  • ImageField.height_field、ImageField.width_field:如果提供这两个参数,则图片将按提供的高度和宽度规格保存。
  • 该字段要求 Python Imaging 库Pillow。
  • 会检查上传的对象是否是一个合法图片。
 
23、models.FileField(upload_to=None[, max_length=100, ** options])
  • 文件
  • FileField.upload_to:一个用于保存上传文件的本地文件系统路径,该路径由 MEDIA_ROOT 中设置
  • 这个字段不能设置primary_key和unique选项.在数据库中存储类型是varchar,默认最大长度为100
 
24、models.FilePathField(path=None[, math=None, recursive=False, max_length=100, **options])
  • FilePathField.path:文件的绝对路径,必填
  • FilePathField.match:用于过滤路径下文件名的正则表达式,该表达式将用在文件名上(不包括路径)。
  • FilePathField.recursive:True 或 False,默认为 False,指定是否应包括所有子目录的路径。
  • 例如:FilePathField(path="/home/images", match="foo.*", recursive=True)

将匹配“/home/images/foo.gif”但不匹配“/home/images/foo/bar.gif”


2. django 模型models 字段常用参数
 
1、null
  • 如果是True,Django会在数据库中将此字段的值置为NULL,默认值是False
 
2、blank
  •   如果为True时django的 Admin 中添加数据时可允许空值,可以不填。如果为False则必须填。默认是False。
  • null纯粹是与数据库有关系的。而blank是与页面必填项验证有关的
 
3、primary_key = False
  •    主键,对AutoField设置主键后,就会代替原来的自增 id 列
 
4、auto_now 和 auto_now_add
  •   auto_now   自动创建---无论添加或修改,都是当前操作的时间
  •   auto_now_add  自动创建---永远是创建时的时间
 
5、choices
  • 一个二维的元组被用作choices,如果这样定义,Django会select box代替普通的文本框,
  • 并且限定choices的值是元组中的值
  • GENDER_CHOICE = (
  • (u'M', u'Male'),
  • (u'F', u'Female'),
  • )
  • gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
 
6、max_length
  • 字段长度
 
7、default
  • 默认值
 
8、verbose_name  
  • Admin中字段的显示名称,如果不设置该参数时,则与属性名。
 
9、db_column  
  • 数据库中的字段名称
 
10、unique=True  
  • 不允许重复
 
11、db_index = True  
  • 数据库索引
 
12、editable=True  
  • 在Admin里是否可编辑
 
13、error_messages=None  
  • 错误提示
 
14、auto_created=False  
  • 自动创建
 
15、help_text  
  • 在Admin中提示帮助信息
 
16、validators=[]
  • 验证器
 
17、upload-to
  • 文件上传时的保存上传文件的目录

models.py

        # -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

class UserInfo(models.Model):

userName = models.CharField(max_length=30)  #用户名

passWord = models.CharField(max_length=30)  #密码

gendle = models.BooleanField()  #性别

birthday = models.DateField()   #出生日期

weigth = models.FloatField()    #体重

heigth = models.IntegerField()  #身高

email = models.EmailField()     #邮箱

host = models.GenericIPAddressField()  #IP地址

introduce = models.TextField()  #个人简介

blog = models.URLField()        #博客地址

photo = models.ImageField()     #照片

CV = models.FilePathField()     #个人简历文件

createDate = models.DateTimeField()     #帐号申请时间

Django model 字段类型及选项解析---转载的更多相关文章

  1. Django model 字段类型及选项解析

    字段类型选择: AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 ...

  2. Django model字段类型清单

    转载:<Django model字段类型清单> Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField ...

  3. Django model 字段类型清单

    Django model字段类型清单 Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField 一个自动递增的整型字 ...

  4. Django——model字段类型 2

    Django 通过models实现数据库的创建.修改.删除等操作,Django中model作为数据资源指定了字段以及一些相应的功能,通常每个model对应数据库中的一张表,(每个model都是从dja ...

  5. Django model字段类型(转)

    AutoField     一个 IntegerField, 添加记录时它会自动增长. 你通常不需要直接使用这个字段; 如果你不指定主键的话,系统会自动添加一个主键字段到你的 model.(参阅 _自 ...

  6. Django文档——Model字段类型(Field Types)

    大部分内容参考自http://wrongwaycn.github.io/django11/topics/db/models/index.html#topics-db-models ,内容是django ...

  7. django【ORM】model字段类型

    1.AutoField 一个自增的IntegerField,一般不直接使用,Django会自动给每张表添加一个自增的primary key. 2.BigIntegerField 64位整数, -922 ...

  8. python-django 模型model字段类型说明

    V=models.CharField(max_length=None<, **options>) #varchar V=models.EmailField(<max_length=7 ...

  9. Django model 字段详解

    字段类型选择: AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 ...

随机推荐

  1. web.xml配置文件的简单说明

    简单说一下,web.xml的加载过程.当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等).首先会去读取web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常的 ...

  2. 《Linux内核原理与分析》第一周作业 20189210

    实验一 Linux系统简介 这一节主要学习了Linux的历史,Linux有关的重要人物以及学习Linux的方法,Linux和Windows的区别.其中学到了LInux中的应用程序大都为开源自由的软件, ...

  3. tomcat之性能优化

    tomcat是我们常用的web容器,它的性能高低直接影响到应用对外提供服务的能力和用户的体验,所以tomcat的优化至关重要.对于单台tomcat服务器而言,优化主要是两方面:内存优化和配置优化(例如 ...

  4. Python insert()方法--list

    描述 insert()方法:用于向列表中指定的索引位置之前插入新的对象,因为是在对应目标之前插入,故此方法无法像append()方法一样将对象添加到列表末尾. 语法 语法格式:list.insert( ...

  5. Fillder安装,如何解决证书无法导出

    Q: 安装配置完Fidder之后,点击导出证书,提示Creation of the root ceritificate  was not successful A :需执行dos命名. -cy aut ...

  6. python中字符串的拼接

    1.+ 号 2.format() 3.f"{username}登录成功" 4.%s 5.列表中的 join 6.逗号 http://www.cnblogs.com/gengcx/p ...

  7. UIView的绘制原理

    当UIView调用setNeedDisplay之后, 系统会调用view对应layer的 setNeedsDisplay, 在当前runloop即将结束的时候调用CALayer的display方法. ...

  8. 小程序 滚动wx.pageScrollTo

    API:https://developers.weixin.qq.com/miniprogram/dev/api/wx.pageScrollTo.html wx.pageScrollTo 在小程序的开 ...

  9. ORACLE——获取随机数

    在oracle中获取一个指定的随机数: --(DBMS_RANDOM.VALUE(INT NUM1,INT NUM2),比如: ,) FROM DUAL; --结果:8.23602331029803 ...

  10. webpack(5) -开发环境

    使用 source map (仅用于开发环境) 当 webpack 打包源代码时,可能会很难追踪到 error(错误) 和 warning(警告) 在源代码中的原始位置.例如,如果将三个源文件(a.j ...