django mysql 文档_django 数据库ORM参数文档

字段选项

下面的参数都是可用的并且是可选的:

null

如果是True的话 将会存储Null值在数据库 默认是False mysql选项: null

blank

如果为True 则允许字段留空 默认False

choices

2个元组的迭代 用于给字段提供选项

db_columen

数据库字段名 如果不写 将使用 变量名

db_index

如果True 将会给这个字段创建一个索引

db_tablespace

Oracle空间管理上的逻辑单位(略过)

default

字段默认值

editable

如果为False 则admin模块或者其他的 moduelform 表单里不会被显示

error_messages

当字段产生异常活错误的时候设置error_message可以让你覆盖默认的提示

help_text

在form表单显示一个帮助文本 它是一个非常有用的文档 即使这个字段不被应用在表单上

primary_key

如果True 这个字段为主键

unique

如果True 设置这个字段唯一

unique_for_date

关联一个日期类型字段 在这个日期内 字段值不能重复 eg: title字段 设置unique_for_date="pub_date" Django不允许有两个相同记录的title在同一个日期

unique_for_month && unique_for_year

同 unique_for_date

verbose_name

字段定义

给这个字段一个人们理解的注释 如果没有给将会自动使用字段的名称 默认字段的第一个参数 eg: a = charField('verbose_name')

validators

一个表单验证的列表 详见 validators

字段类型

AutoField (**option)

一个自增的数值字段 通常不需要设置 会自动给主键添加在model里

BigIntegerField (**option)

64位的整数 范围在 -9223372036854775808~9223372036854775807 表单默认是是一个文本输入框text input

BooleanField ([**options])

真假字段 表单默认是一个复选框checkbox 如果你接受一个空值 请用 NullBoleanField

CharField (max_length=None[, **options])

字符串字段 如果大小相当于数值 请使用 TextFied 表单默认是text input CharFiedl 有一个额外的必填参数 CharField.max_length 设置字段字符的最大长度 这个max_length会强制的执行数据库级别和django的验证

CommaSeparatedIntegerField (max_length=None[, **options])

由逗号分割的整数 相当于CharField max_length为必填

DateField([auto_now=False, auto_now_add=False, **options])

一个日期 相当于python的 datetime.date 有一些额外的选项

DateField.auto_now 自动的添加在对象每一次保存的时间 始终使用当前时间 不能被更改

DateField.auto_now_add 自动添加对象创建时候的时间 始终使用当前时间 不能被更改

表单默认是一个text input 在admin模块会添加一个日历的js 附加了一个无效日期的错误信息

DateTimeField ([auto_now=False, auto_now_add=False, **options]) 日期和时间的字段 相当于python的 datetime.datetime 和DateField相同的参数

DecimalField (max_digits=None, decimal_places=None[, **options])

精确位数的十进制小数 相当于python的Decimal

DecimalField.max_digits 允许最大的位数 这个数字必须大于等于 decimal_places

DecimalField.decimal_places 位数中包含小数的位数

比如存数一个数字最大999 有两个小数则 max_digits=5, decimal_places=2 表单默认是一个text input

EmailField ([max_length=75, **options])

一个检查输入是否为正确邮箱的CharFiled

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

文件字段上传 不支持 primary_key 和 unique 参数 会引起一个 TypeError 错误

FileField.upload_to 一个本地的文件路径将会添加到到你的MEDIA_ROOT设置规定url的值 使用上传的日期和时间作为路径的一部分

FileFiled.storage (选填) 你可以设置自己的存储路径而忽略MEDIA_ROOT的设置

FileField and FieldFile 当你访问一个FileField在一个model里 会给你一个FieldFile实例作为访问底层文件的代理 这个类有专门的属性和方法用于文件的数据交换

FieldFile.url 一个只读的访问文件的相对url的属性通过调用底层Storage类的url()方法

Field.open(mode='rb') 类似 Python open() 方法 打开这个文件的实例用指定的模式(rb)

Field.close() 类似 Python file.close() 方法 关闭和文件相关的实例

Field.save(name, content, save=True) 这个方法需要一个文件名和内容 并将它们传递到stroge类的字段 然后关联存储的文件和model的字段 如果你想手动关联文件和FileField实例在你的model上 save()方法用于保存该文件的数据 需要两个必填的参数 name和content 选填的save参数控制在文件修改后是否保存 默认为True

note: content是django.core.file.File的实例 不是python内建的文件对象 你可以构造一个File从python的文件对象

from django.core.files import File #Open an existing file using Python's built-in open() f = open('/tmp/hello.world') myfile = File(f)

or:

from django.core.files.base import ContentFile myfile = ContentFile("hello world")

FieldFile.deletes ([save=True]) 删除文件关联的实例 清理field所有属性 Note: 当调用delete()时这个文件代开 这个方法将关闭它 可选的save参数控制删除文件后是否保存 默认为True

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

一个CharField 选择限定的文件名在文件系统的目标目录 有三个参数 第一个是必填

FilePathField.path(必填) 绝对的系统文件目录路径从FilePathField获得它的选择

FilePathField.match 一个正则表达式作为一个字符串 FilePathField将用它过滤文件名 这个正则表达式只适用于文件名而不是完整的路径

FilePathField.recursive True or False 默认假 指定路径所有子目录都被包含

FilePathField.allow_files 默认True 文件是否包含被指定的位置

FilePathField.allow_folders 默认Flase,文件夹是否包含被指定的位置, allow_folders 和 allow_files 有一个必须是真 当然两个可以一起用 默认FilePathField实例创建varchar(100)

FloatField ([**options])

一个浮点相当于python的float 表单默认是一个TextInput

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

继承FileField的所有属性 但是要验证上传的对象是一个有效的图像 有两个额外的属性width 和 height

mageField.height_field & ImageField.width_field 如果提供着两个参数 图片按照提供的高度和宽度保存 该字段需要Python Imaging库

IntegerField([**options])

整型 默认表单TextInput

IPAddressField([**options])

一个ip地址 字符串格式(e.g. “192.0.2.30”) 默认表单TextInput

GenericIPAddressField([protocol=both, unpack_ipv4=False, **options])

ip4和ip6的地址 字符串格式(e.g. 192.0.2.30 or 2a02:42fe::4) 表单默认TextInput

NullBooleanField([**options])

有点像BooleanField 但是允许Null 可以用BooleanField(null=True)替代

PositiveIntegerField([**options])

和IntegerField类似 但必须是整数或0

PositiveSmallIntegerField([**options])

和PositiveIntegerField类似 但只允许在一定的位数之下

SlugField([max_length=50, **options])

Slug是一个报纸术语 一个slug是一些事情的标签 包含字母 下划线或者连接符 他们通常在url中使用 你可以指定max_length 默认50 设置Field.db_index为True 他是非常有用的自动生成一个SlugField 基于一些其他值的值 你可以自动做这些在admin功能使用prepopulated_fields

SmallIntegerField([**options])

大文本字段 表单默认Textarea

TimeField

一个时间 像Python里的的 datetime.time实例 可以自动生成时间像DateField一样

URLField

一个记录URL的CharField 表单默认 TextInput 如果不指定max_length默认200

数据库字段关系

ForeignKey(othermodel[, **options])

一个多对一的关系 需要提供一个和模型有关的参数

如果你需要创建一个关系在一个还没有被定义的model上 你可以使用model的名字而不是model的对象

class Car(models.Model): manufacturer = models.ForeignKey('Manufacturer') # ... class Manufacturer(models.Model): # ...

参考在另一个应用中的模型 你可以明确的指定一个model和应用程序的名字 如果 Manufacturer Model 定义在production应用里 你需要

class Car(models.Model): manufacturer = models.ForeignKey('production.Manufacturer')

上面这种方式可以很好的解决两个应用互相导入的情况

一个数据库索引被自动的创建在ForeignKey 你可以设置db_index=False禁用它 如果你创建一个 foregin key 是为了一致性而不是为而不是关联(join)你或许是想避免索引的开销 或者你只想想创建一个 alternative index 像一个 partial or multiple column index

Database Representation 参数

ForeignKey 接受一组额外的参数 所有的都是选填 定义了relation工作的细节

摘抄自 原链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值