Django-model之feild进阶

参考地址

在model中添加字段的格式一般为: field_name = field_type(**field_options)

代码示例

from django.db import models
from wagtail.core.models import Page
from wagtail.core.fields import RichTextField
from wagtail.admin.edit_handlers import FieldPanel

class HomePage(Page):
    body = RichTextField(blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('body', classname="full"),
    ]

这次主要对body = RichTextField(blank=True) 进行分析,body为对象HomePage的属性,同时body也是对象,在上述代码中定义为RichTextField,且option设置为blank=True

关于feild的options和types

feild为样式对象,options为选项,RichTextField就是field的其中一种(wagtile特有的)

options

1. Field.null

  • bool型,null选项,默认为False,空字符串,若为真,则为null

2. Field.blank

  • bool型,空白选项,默认为False,即要求Feild不得为空白,反之可以允许空白内容

3. Field.choices

  • 只要对象属性里含有长度>=2的list或tuple,就会自动生成一个选择器,如:
YEAR_IN_SCHOOL_CHOICES = (
    ('FR', 'Freshman'),
    ('SO', 'Sophomore'),
    ('JR', 'Junior'),
    ('SR', 'Senior'),
)

当然,也可以是多层级嵌套的

4.Field.db_column

  • 数据库字段名。字段名默认为属性名,否则为指定的名字

5.Field.db_index

  • bool型,默认为False,若为True,则为改属性在数据库添加索引

6.Field.db_tablespace

  • 数据库对应表的空间大小。默认为setting里的DEFAULT_INDEX_TABLESPACE

7.Field.default

  • Field的默认值,可以为一个callable对象,即每次调用该feild时都会回调一个对象

8.Field.editable

  • 默认为True,即可编辑。设置为False时在后台admin无法展现出来

9.Field.error_messages

  • 设置跳过的错误信息,可设置值有null, blank, invalid, invalid_choice, unique, and unique_for_date

10.Field.help_text

  • 给装饰器添加注释,如:
    help_text="Please use the following format: <em>YYYY-MM-DD</em>."

11.Field.primary_key

  • 主键,Django会自动添加AutoField来设置primary_key=True。
    primary_key=True意味着null=False and unique=True.

12.Field.unique

  • 默认为False,True时则feild必须唯一,不唯一时会报错django.db.IntegrityError

13.Field.unique_for_date

  • 设置日期主键,还有unique_for_month、unique_for_year等

14.Field.verbose

  • 人工field名,若无则Django自动创建

15.Field.validators

Field types

即对象的一些样式

1.AutoField()

  • 根据已有id自增长的整形唯一字段,一般每个model类不需设置该字段,因为django会为每个model自动设置。django默认会为每个model类添加如下语句:id = models.AutoField(primary_key=True) 当其他字段添加了primary_key属性,则不会创建id字段了。每个model类仅能有一个主键

2.BooleanField()

  • 布尔型字段,默认的表单窗口部件是CheckBoxInput

3.CharField()

  • 字符型字段,默认的表单窗口部件是TextInput。该字段类型有一个必需参数:max_length 在数据库水平限定了字符串最大长度

4.DateField()

  • 字段的值是python中datetime.date的实例,默认的表单窗口是TextInput有几个可选的参数:
    auto_now=True/False:当设置为True时,每当该对象使用save()时,该字段的值就会被更新。
    auto_now_add=True/False: 当设置为True时,该字段的值为该对象被创建时的日期

5.DateTimeField()

  • 日期和时间字段,值为datetime.datetime实例。默认的表单窗口以及可选参数同上

6.DecimalField()

  • 混合精度的小数型数字字段。有两个必需的参数:
    max_digits=ingt_number:限定数字的最大位数(包含小数位)
    decimal_places=int_number:存储数字的小数位

7.EmailField(max_length=254, **options)

8.FileField(upload_to=None, max_length=100, **options)

  • 这个字段不能设置primary_key和unique选项.在数据库中存储类型是varchar,默认最大长度为100.

  • 有两个可选参数:
    upload_to如果使用默认的FileSystomStorage,文件将会存储到settings文件中配置的MEDIA_ROOT路径中。
    upload_to的值也可以为可调用对象,通过调用这个对象可以获得上传路径。
    instance=: 定义了FileField的模型实例
    filename='': 文件名称。

9.FilePathField(path=None, match=None, recursive=False, max_length=100, **options)

  • 这个字段的值被限制在系统上某个目录中的所有文件名集合中。有三个参数

  • path='': 该参数必需。上行所说的‘某个目录’的绝对路径。Example: "/home/images".

  • recursive=True/False: 可选参数,默认为False。设定是否递归该目录下所有子目录的所有文件。

  • match='pattern': 可选参数。格式是正则表达式。用来拣选符合匹配正则表达式的文件

10.FloatField()

  • 浮点字段,默认的表单窗口部件是NumberInput。和DecimalField经常混淆不清,FloatField在内部使用Python中的float对象,而DecimalField在内部使用Python中的decimal对象。

11.ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, **options)

  • 图像字段。继承了FileField的所有属性和方法。而且还能自动验证上传的对象是否为合法的图像。

12.IntegerField()

  • 整形字段

13.GenericIPAddressField(protocol='both', unpack_ipv4=False, **options)

  • ip地址字段,protocol='both/ipv4/ipv6' 默认为both

14.NullBooleanField ()

  • 类似于BooleanField,不同的是其允许值为null

15.TextField()

  • 与CharField类似,但一般用来存储体积较大的文本。

16.TimeField(auto_now=False, auto_now_add=False, **options)

  • 时间字段,其值为datetime.time实例

16.URLField(max_length=200, **options)

  • URL字段。类似于CharField的子类,默认最大长度为200.

17.UUIDField(**options)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349