[关闭]
@1kbfree 2018-03-09T05:47:11.000000Z 字数 2830 阅读 976

django

models是django中的数据库模型

字段都被定义在django.db.models.fields目录下,为了方便,被导入django.db.models中

AutoField: 一个自动增长的字段,django会默认帮我们生成`wd`

CharField(max_length = 字符长度):  字符串字段,单行输入,用于较短的字符串,如要保存大量文本, 使用 
TextField,CharField必须接受一个参数

BooleanField: 布尔字段只能是True或False,admin管理界面里会自动将其描述为checkbox

NullBooleanField: 也是布尔字段不过他可以有Null或True或False,admin管理界面里会自动将其描述为checkbox

TextField:一个容量很大的文本字段,一般字段长度超过4000后使用, admin 管理界面用 <textarea>多行编辑框表示该字段数据

CommaSeparatedIntegerField:用于存放逗号分隔的整数值。类似 CharField,必须max_length 参数

DecimalField(max_digits=None,decimal_places=None):使用python的Decimal实例表示的十进制浮点数
    DecimalField.max_digits:总位数
    DecimalField.decimal_places:小数占的位数

FloatField:浮点型字段,参数同DecimalField

IntegerField:用于保存一个整数

IPAddressField:一个字符串形式的 IP 地址

PhoneNumberField:一个带有合法美国风格电话号码校验的 CharField(格式:XXX-XXX-XXXX)

PositiveIntegerField:类似 IntegerField, 
但取值范围为非负整数(这个字段应该是允许0值的…可以理解为无符号整数)

URLField:用于保存 URL。 若 verify_exists 参数为 True (默认), 给定的 URL 会预先检查是否存在(即URL是否被有效装入且没有返回404响应)

DateField[auto_now=False, auto_now_add=False]): 日期字段,admin 用一个文本框 <input type=”text”> 来表示该字段数据(附带一个 JavaScript 日历和一个”Today”快捷按键
    auto_now:当对象被保存时,自动将该字段的值设置为当前时间.通常用于表示 “last-modified” 时间戳;时间就是修改后的值
    auto_now_add:当对象首次被创建时,自动将该字段的值设置为当前时间.通常用于表示对象创建时间;时间就是创建时的值

TimeField:使用Python的datetime.time实例表示的时间,参数同DateField

DateTimeField:使用Python的datetime.datetime实例表示的日期和时间,参数同DateField

DateTimeField:类似 DateField 支持同样的附加选项。

EmailField:一个带有检查 Email 合法性的 CharField,不接受参数

FileField:一个文件上传字段。 要求一个必须有的参数: upload_to, 一个用于保存上载文件的本地文件系统路径。 这个路径必须包含 strftime formatting, 该格式将被上载文件的 date/time 替换(so that uploaded files don’t fill up the given directory)。在一个 model 中使用 FileField 或 ImageField 需要以下步骤:在你的 settings 文件中, 定义一个完整路径给 MEDIA_ROOT 以便让 Django在此处保存上传文件。 (出于性能考虑,这些文件并不保存到数据库。) 定义 MEDIA_URL 作为该目录的公共 URL。 要确保该目录对 WEB 服务器用户帐号是可写的。在你的 model 中添加 FileField 或 ImageField, 并确保定义了 upload_to 选项,以告诉 Django 使用 MEDIA_ROOT 的哪个子目录保存上传文件。你的数据库中要保存的只是文件的路径(相对于 MEDIA_ROOT)。 出于习惯你一定很想使用 Django 提供的 get_<fieldname>_url 函数。举例来说,如果你的 ImageField 叫作 mug_shot, 你就可以在模板中以 {{ object。get_mug_shot_url }} 这样的方式得到图像的绝对路径。

XMLField:XML字符字段,校验值是否为合法XML的 TextField,必须提供参数:
    schema_path:校验文本的 RelaxNG schema 的文件系统路径。

ImageField:继承了FileField的所有属性和方法,但对上传的对象进行校验,确保它是个有效的image

字段选项

    null :缺省设置为false.通常不将其用于字符型字段上,比如CharField,TextField上.字符型字段如果没有值会返回空字符串。
    blank:该字段是否可以为空。如果为假,则必须有值
    choices:一个用来选择值的2维元组。第一个值是实际存储的值,第二个用来方便进行选择。如SEX_CHOICES= ((‘F’,'Female’),(‘M’,'Male’),)
    db_column:字段的名称,如果未指定,则使用属性的名称
    db_index:若值为 True, 则在表中会为此字段创建索引
    default:设定缺省值
    editable:如果为假,admin模式下将不能改写。缺省为真
    help_text:admin模式下帮助文档
    primary_key:设置主键,如果没有设置django创建表时会自动加上:
    radio_admin:用于admin模式下将select转换为radio显示。只用于ForeignKey或者设置了choices
    unique:数据唯一
    unique_for_date:日期唯一,如下例中系统将不允许title和pub_date两个都相同的数据重复出现
    title = meta.CharField(maxlength=30,unique_for_date=’pub_date’)
    unique_for_month / unique_for_year:用法同上
    validator_list:有效性检查。非有效产生 django.core.validators.ValidationError 错误

关系

关系的类型包括:
    ForeignKey:一对多,将字段定义在多的端中
    ManyToManyField:多对多,将字段定义在两端中
    OneToOneField:一对一,将字段定义在任意一端中
可以维护递归的关联关系,使用'self'指定,详见“自关联”
用一访问多:对象.模型类小写_set
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注