Django模型的Field Types总结

Field Types

常用参数:

null

如果设置为 True , Django 存放一个 NULL 到数据库字段。默认为 False。

blank

如果设置为 True , 此 field 允许为 blank (空白),默认为 False。

choices

一个2元元组的元组或者列表,如果执行 choices , Django 的 admin 就会使用 选择框而不是标准的 text 框填写这个 field。


YEAR_IN_SCHOOL_CHOICES = (

(u‘FR‘, u‘Freshman‘),

(u‘SO‘, u‘Sophomore‘),

(u‘JR‘, u‘Junior‘),

(u‘SR‘, u‘Senior‘),

(u‘GR‘, u‘Graduate‘),

)

2元元组的第一个元素是要存入 database 的数据,第二个元素是 admin 的界面 显示的数据。

使用了 choices 参数的 field 在其 model 示例里,可以用 "get_field的名 字_display" 方法 显示 choices 的显示字串(就是2元元组的第二个数据)。示 例:


from django.db import models

class Person(models.Model):

GENDER_CHOICES = (

(u‘M‘, u‘Male‘),

(u‘F‘, u‘Female‘),

)

name = models.CharField(max_length=60)

gender = models.CharField(max_length=2, choices=GENDER_CHOICES)


>>> p = Person(name="Fred Flinstone", gender="M")

>>> p.save()

>>> p.gender

u‘M‘

>>> p.get_gender_display()

u‘Male‘

default

field 的默认值,可以使用可调用对象(a callable object),如果使用可调用 对象,那么每次创建此 model 的新对象时调用可调用对象。常见如 datatime 。

help_text

help_text 的值可以在 admin form 里显示,不过即使不使用 admin ,也可以当 做描述文档使用。

primary_key

如果为 True , 这个 field 就是此 model 的 primary key 。

unique

如果为 True, 此 field 在这个 table 里必须唯一。

verbose_name

verbose,详细的意思。verbose_name,就可以理解为详细的名字吧。

除了ForeignKey, ManyToManyField 和 OneToOneField之外,每个类型的字段都有一个可选的第一位置参数-详细的名字。如果没有给出详细的名称,Django将自动使用字段的属性名来代替他。替代过程中会转换下划线为空格。

该字段中,名字的详情为”person’s first name”:


first_name = models.CharField("person‘s first name", max_length=30)

以下字段中,first_name的详细名字为"first name":


first_name = models.CharField(max_length=30)

ForeignKey, ManyToManyField 和 OneToOneField要求第一个参数是模型的类,所以需要使用verbose_name关键字参数,如:


poll = models.ForeignKey(Poll, verbose_name="the related poll")

sites = models.ManyToManyField(Site, verbose_name="list of sites")

place = models.OneToOneField(Place, verbose_name="related place")

在需要的时候Django会自动大写 verbose_name的首字母。

原来verbose_name字段就是为ForeignKey, ManyToManyField 和 OneToOneField这三种关系准备的啊!

常见Filed Types

1、AutoField

如果没有指明主键,就会产生一个自增的主键。

2、BigIntegerField

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

3、BinaryField

存储原始二进制数据,仅支持字节分配。功能有限。

4、BooleanField

布尔型和NullBooleanField有区别,true/false,本类型不允许出现null。

5、CharField

字符串,一般都在创建时写入max_length参数。

6、CommaSeparatedIntegerField

逗号分隔的整数,考虑到数据库的移植性,max_length参数应该必选。

原文解释:A field of integers separated by commas. As in CharField, the max_length argument is required and the note about database portability mentioned there should be heeded.

7、DateField

时间,对应Python的datetime.date,额外的参数:DateField.auto_now表示是否每次修改时改变时间,DateField.auto_now_add 表示是否创建时表示时间,一般来说数据库重要的表都要有这样的字段记录创建字段时间个最后一次改变的时间。关于时间的话,建议timestamp,当然 python的话还是DateTime吧。

8、DateTimeField

对应Python的datetime.datetime,参照参数(7)。

9、DecimalField

固定精度的十进制数,一般用来存金额相关的数据。对应python的Decimal,额外的参数包括DecimalField.max_digits和DecimalField.decimal_places ,这个还是要参照一下mysql的Decimal类型,http://database.51cto.com/art/201005/201651.htm

例如:price = models.DecimalField(max_digits=8,decimal_places=2)

10、EmailField

字符串,会检查是否是合法的email地址

11、FileField

class FileField([upload_to=None, max_length=100, **options])

存文件的,参数upload_to在1.7之前的一些老版本中必选的

12、FloatField

浮点数,必填参数:max_digits,数字长度;decimal_places,有效位数。

13、ImageField

class ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])

图片文件类型,继承了FileField的所有属性和方法。参数除upload_to外,还有height_field,width_field等属性。

14、IntegerField

[-2147483648,2147483647 ]的取值范围对Django所支持的数据库都是安全的。

15、IPAddressField

点分十进制表示的IP地址,如10.0.0.1

16、GenericIPAddressField

ip v4和ip v6地址表示,ipv6遵循RFC 4291section 2.2,

17、NullBooleanField

可以包含空值的布尔类型,相当于设置了null=True的BooleanField。

18、PositiveIntegerField

正整数或0类型,取值范围为[0 ,2147483647]

19、PositiveSmallIntegerField

正短整数或0类型,类似于PositiveIntegerField,取值范围依赖于数据库特性,[0 ,32767]的取值范围对Django所支持的数据库都是安全的。

20、SlugField

只能包含字母,数字,下划线和连字符的字符串,通常被用于URLs表示。可选参数max_length=50,prepopulate_from用于指示在admin表单中的可选值。db_index,默认为True。

21、SmallIntegerField

小整数字段,类似于IntegerField,取值范围依赖于数据库特性,[-32768 ,32767]的取值范围对Django所支持的数据库都是安全的。

22、TextField

文本类型

23、TimeField

时间,对应Python的datetime.time

24、URLField

存储URL的字符串,默认长度200;verify_exists(True),检查URL可用性。

25、FilePathField

class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])

类似于CharField,但是取值被限制为指定路径内的文件名,path参数是必选的。

参考资料:

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField

http://jianlee.ylinux.org/Computer/Python/django_models.html

http://luo3380.blog.163.com/blog/static/12043208620131139254121/

http://www.zijin5.com/django-model-yi/

0
时间: 2024-08-08 11:03:39

Django模型的Field Types总结的相关文章

django字段类型(Field types)介绍

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

django Field Types

Field Types常用参数:null如果设置为 True , Django 存放一个 NULL 到数据库字段.默认为 False.blank如果设置为 True , 此 field 允许为 blank (空白),默认为 False.choices一个2元元组的元组或者列表,如果执行 choices , Django 的 admin 就会使用 选择框而不是标准的 text 框填写这个 field.YEAR_IN_SCHOOL_CHOICES = ( (u'FR', u'Freshman'),

Django 模型 - 模型的定义

Django也遵循了MVC的分层原则,不过在做法上略有不同.    首先模型部分保持不变:Django的模型增只负责把数据传入传出数据库.然而Django里的视图却并不是显示数据的最后一步----Django的视图其实更接近MVC里传统意义上的控制器.他们是用来将模型层和表示层(有HTML和Django的模板语言组成)链接在一起的python函数.按Django开发团队的话老说就是: 我们理解的MVC里,视图的作用是描述将要显示给用户的数据.这不仅仅是数据看上去的外观,含包括如何表示数据.视图描

09 Django 模型(数据库)

Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可,不用更改models.py中的代码,丰富的API极大的方便了使用. 一.打开model文件,修改其中代码 from django.db import models class Person(models.Model): name = models.CharField(max_length

Django模型的_meta编程

Python有反射机制,Django也不例外,也有很好的反射机制,每个Django模型都有一个属性_meta,_meta也有属性和方法,这些属性和方法反射出了模型的一些特性,如果_meta用的好的话,不仅可也是代码更加优美,而且还可以大大提高代码的通用性和重复利用性.下面主要介绍_meta的属性和方法. 在django项目中,定义一个模型,然后用dir()函数打印出该模型的_meta的属性和方法,结果如下: _meta的属性和方法 '__class__', '__delattr__', '__d

4Python全栈之路系列之Django模型

Python全栈之路系列之Django模型 MTV开发模式 把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的Model-View-Controller(MVC)模式.在这个模式中,Model代表数据存取层,View代表的是系统中选择显示什么和怎么显示的部分,Controller指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分. Django紧紧地遵循这种MVC模式,可以称得上是一种MVC框架. 以下是Django中M.V和C各自的含义: **M**: 数

django模型models.py文件内容理解

首先,要理解这句话:模型是你的数据的唯一的.权威的信息源.它包含你所存储数据的必要字段和行为.通常,每个模型对应数据库中唯一的一张表 基础:每个模型都是django.db.models.Model的一个python子类 模型的每个属性都表示为数据库中的一个字段 django提供一套自动生成的用于数据库访问的API,下一章总结 1.第一个例子 from django.db import models class Person(models.Model): first_name = models.C

Django?模型(数据库)

Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可,不用更改models.py中的代码. 大家可以按照我的步骤来开始做: 1 2 3 django-admin.py startproject learn_models # 新建一个项目 cd learn_models                      

一 Django模型层简介

模型 django提供了一个强大的orm(关系映射模型)系统. 模型包含了你要在数据库中创建的字段信息及对数据表的一些操作 使用模型 定义好模型后,要告诉django使用这些模型,你要做的就是在配置文件中的INSTALLED_APPS中添加模型所在的应用名称 字段类型 模型中的每个字段都是Field类相应的实例,django根据Field类型来确定以下信息: 列类型,告知数据库要存储那种数据 渲染表单时使用的默认HTML widget 验证,被用在admin和表单中 通用字段参数(常用) nul