社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  翻译

[精华] [翻译]吐血翻译 Django Model Field

neatpath • 11 年前 • 12748 次点击  

因为我英文实在太差 应该有很多翻译不通顺或者理解有误的地方 希望大家指正

字段选项

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

  • 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工作的细节

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/86
 
12748 次点击  
文章 [ 9 ]  |  最新文章 11 年前