Django(二):与model字段与属性

本文详细介绍了Django的Model字段类型,包括AutoField、BinaryField、BooleanField等,并讨论了Field的各种选项,如null、blank、choices等。此外,还特别提到了FileField和ImageField的使用方法以及FieldFile的概念。
摘要由CSDN通过智能技术生成

目录

一、model field 类型

1、AutoField

2、BinaryField ( Django 1.6 版本新增 )

3、BooleanField

4、CharField

5、CommaSeparatedIntegerField

6、DateField

7、DateTimeField

8、DecimalField

9、EmailField

10、FileField

10.1、FileField 和 FieldFile

11、FloatField

12、ImageField

13、IntegerField

14、BigIntegerField

15、SmallInterField

15、IPAddressField

16、TextField

17、URLField

18、JSONField

19、CommaSeparatedIntegerField

20、FilePathField

21、NullBooleanField

22、PhoneNumberField

23、PositiveIntegerField

24、PositiveSmallIntegerField

25、SlugField

26、SmallIntegerField

27、TimeField

28、XMLField

29、ArrayField

二、Field 选项

null

blank

choices

core

db_column

db_index

default

editable

error_messages

help_text

primary_key

radio_admin

unique

unique_for_date

unique_for_month / unique_for_year

verbose_name

validators

关系型数据库:


一、model field 类型

1、AutoField

一个自增的IntegerField,一般不直接使用,Django会自动给每张表添加一个自增的primary key。

2、BinaryField ( Django 1.6 版本新增 )

存储二进制数据。不能使用 filter 函数获得 QuerySet

3、BooleanField

True/False,默认的widget 是 CheckboxInput。
如果需要置空,则必须用 NullBooleanField 代替。
Django 1.6 修改:BooleanField 的默认值 由 False 改为 None,在 default 属性未设置的情况下。

4、CharField

存储字符串。必须有 max_length 参数指定长度。默认的form widget 是 TextInput
如果字符串巨长,推荐使用 TextField。

5、CommaSeparatedIntegerField

一串由逗号分开的整数。必须有 max_length 参数。

6、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 设置。

7、DateTimeField

日期+时间。与python里的 datetime.datetime 实例同。常用附加选项和DateField一样。
默认 form widget 是一个 TextInput

8、DecimalField

设置了固定精度的十进制数字。在Python中由decimal实例表示。有两个必需的参数:
DecimalField.max_digits:最大位数(包含小数在内)。注意,这个数字必须大于或等于decimal_places。
DecimalField.decimal_places:小数位数。
例如,要以小数点后2位的分辨率存储最高999的数字,您可以使用:
models.DecimalField(…, max_digits=5, decimal_places=2)
为了存储大约10亿的数字,分辨率为小数点后10位:
models.DecimalField(…, max_digits=19, decimal_places=10)
这个字段的默认表单小部件是一个TextInput。

9、EmailField

在 CharField 基础上附加了 邮件地址合法性验证。不需要强制设定 max_length
注意:当前默认设置 max_length 是 75,虽然已经不符合标准,但未了向前兼容,未修改。

10、FileField

文件上传。不支持 primary_key 和 unique 选项。否则会报 TypeError 异常。
必须设置 FileField.upload_to 选项,这个是 本地文件系统路径,附加在 MEDIA_ROOT 设置的后边,也就是 MEDIA_ROOT 下的子目录相对路径。
默认的form widget 是 FileInput。
使用 FileField 和 ImageField 需要以下步骤:
(1)修改 settting.py,设置 MEDIA_ROOT(使用绝对路径),指定用户上传的文件保存在哪里。设置 MEDIA_URL,作为 web地址 前缀,要保证 MEDIA_ROOT 目录对运行 Django 的用户是可写的;
(2)在 model 中增加 FileField 或 ImageField,并指定 upload_to 选项指定存在 MEDIA_ROOT 的哪个子目录里;
(3)存在数据库里的是什么东西呢?是 File 或 Image相对于 MEDIA_ROOT 的相对路径,你可以在 Django 里方便的使用这个地址,比如你的 ImageField 叫 tupian,你可以在 template 中用{ {object.tupian.url}}。
举个例子:假设你的 MEDIA_ROOT='/home/media',upload_to 设置为 'photos/%Y/%m/%d','%Y/%m/%d' 部分使用strftime() 提供。如果你在 2013年10月10日上传了一个文件,那么它就存在 /home/media/photos/2013/10/10/ 下。
文件在 model实例 执行 save操作的同时保存,所以文件在model实例执行save之前,硬盘的上的文件名的是不可靠的。
注意:要验证用户上传的文件确实是自己需要的,以防止安全漏洞出现。
默认情况下,FileField 在数据库中表现为 varchar(100) 的一个列。你可以使用 max_length 来改变这个大小。

10.1、FileField 和 FieldFile

当你访问 一个 model 内的 FileField 时&#

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值