null:当null=True,如果数据库中该字段没有值(不包括空字符串),则系统默认将该字段填充NULL。

当null=False(默认为False),如果数据库中该字段没有值(不包括空字符串),则该字段可以为空。

当数据库中该字段设置了unique=True和blank=True时,该字段null=True而不能是Fale,这样可以避免多次插入数据时造成unique唯一冲突。

blank:注意,这与上面的null不同。null是控制数据库中的字段,而blank是控制前端form表单。

如果字段为blank=True,则表单验证将允许输入空值。如果字段为blank=False,则该字段必须填写。

db_column:用于此字段的数据库列的名称。如果没有给出,Django将使用字段的名称。

db_index:如果db_index=True,则允许创建该字段为索引。

db_tablespace:如果此字段是索引,则db_tablespace的值将应用于此字段索引的数据库表空间的名称。系统默认使用工程项目settings中的DEFAULT_INDEX_TABLESPACE。如果后端数据库不支持数据库表空间可以忽略此项。

default:为字段设置默认值,这个值可以是一个对象,但每次调用这个对象时都会重新创建一个对象。

官方说default的值不能是可变对象(如model instance、list、set等),如果要使用这些可变的对象使用函数调用的方式来实现,如(官方示例):

def contact_default():
return {"email": "to1@example.com"} contact_info = JSONField("ContactInfo", default=contact_default)

但测试发现default=list,dict,set完全没问题,不清楚原因。

primary_key:primary_key=True将该字段设为主键。

unique:unique=True设置该字段值在表中是唯一的,不能重复。

unique_for_date:将该字段日期(DateField、DateTimeField)设置为唯一不能重复。

unique_for_year:将该字段年份(DateField、DateTimeField)设置为唯一不能重复。

unique_for_moth:将该字段月份(DateField、DateTimeField)设置为唯一不能重复。

verbose_name:对字段进行描述,一般用于显示时的title、表头等,如果不写该字段,默认verbose_name=该字段名。

如:first_name = models.CharField(max_length=30)   中默认verbose_name='first_name'。

choices:是一个可迭代对象(list或者tuple)如果参数2个以上(如:[(A, B), (A, B) ...]),则该字段默认前端form组件的select选择框,而不把它当成是一个文本字段。

如下官方示例:

from django.db import models

class Student(models.Model):
FRESHMAN = 'FR'
SOPHOMORE = 'SO'
JUNIOR = 'JR'
SENIOR = 'SR'
YEAR_IN_SCHOOL_CHOICES = (
(FRESHMAN, 'Freshman'),
(SOPHOMORE, 'Sophomore'),
(JUNIOR, 'Junior'),
(SENIOR, 'Senior'),
)
year_in_school = models.CharField(
max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=FRESHMAN,
) def is_upperclass(self):
return self.year_in_school in (self.JUNIOR, self.SENIOR)

显示选择框的内容,如:sex = models.IntegerField(choices=[(0, '女'),(1, '男'),],default=1),如果我们使用"对象.sex"的方式将只能获取0或者是1,而不能获取男或者女。可以使用“对象.get_sex_display”的方式来获取选项中的男或女。

如下示例:

from django.db import models
class Person(models.Model):
SHIRT_SIZES = ( # 定义choices的选项
('S', 'Small'),
('M', 'Medium'),
('L', 'Large'),
)
name = models.CharField(max_length=60)
shirt_size = models.CharField(max_length=1,choices=SHIRT_SIZES) # 使用choices选项 >>>from 项目_app.models import Person # 在终端中导入模块
>>> p = Person(name="Fred Flintstone", shirt_size="L")
>>> p.save()
>>> p.shirt_size # 直接打印字段
'L' >>> p.get_shirt_size_display() # 使用对象.get_字段_display()的方式打印字段
'Large'

关于上述示例,choices=SHIRT_SIZES,中SHIRT_SIZES的第一个元素的值将作为数据库中的值,第二个元素的值将被显示在form组件中。

editable:如果editable=False,则该字段不会显示在admin 或者其它ModelForm中。默认为True。

error_messages:自定义错误信息(字典类型),从而定制想要显示的错误信息;字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date

如:{'null': "不能为空.", 'invalid': '格式错误'}

参考文档:https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.Field.db_tablespace

ORM(四)字段参数的更多相关文章

  1. Python--day68--Django ORM的字段参数、元信息

    字段参数 null 用于表示某个字段可以为空. unique 如果设置为unique=True 则该字段在此表中必须是唯一的 . db_index 如果db_index=True 则代表着为此字段设置 ...

  2. Django 之 ORM 字段和字段参数

    ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...

  3. python3开发进阶-Django框架的ORM常用字段和参数

    阅读目录 常用字段 字段合集 自定义字段 字段参数 关系参数 多对多的关联关系的三种方式 一.常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中 ...

  4. Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法

    Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法 一丶ORM常用字段 ...

  5. Django中ORM介绍和字段及字段参数

    Object Relational Mapping(ORM) 1 ORM介绍 1.1 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对 ...

  6. Django ORM 常用字段和参数

    Django ORM 常用字段和参数 一:常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. I ...

  7. ORM常用字段和参数

    目录: ORM常用字段和参数

  8. Django之ORM字段和字段参数

    ORM介绍 ORM概念 ORM由来 ORM的优势 ORM的劣势 ORM总结 Django中的ORM Django项目使用MySQL数据库 Model 快速入门 字段 自定义字段 字段参数 Model ...

  9. django中的ORM介绍和字段及字段参数

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  10. Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM)

    Django中ORM介绍和字段及字段参数   Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简 ...

随机推荐

  1. PAT1008:Elevator

    1008. Elevator (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The highest ...

  2. iOS开发中数据持久化

    使用几个小例子分别实现 归档NSKeyedArchiver.NSUserDefaults.plist文件数据存储,简单直观.代码地址

  3. html5中让页面缩放的4种方法

    1.viewport 这种方法,不是所有的浏览器都兼容<meta name="viewport" content="width=640,minimum-scale= ...

  4. Linux时间子系统之三:jiffies

    1. jiffies背景介绍 jiffies记录了系统启动以来,经过了多少tick. 一个tick代表多长时间,在内核的CONFIG_HZ中定义.比如CONFIG_HZ=200,则一个jiffies对 ...

  5. 豆瓣API

    Api V2 索引 图书Api V2 电影Api V2 音乐Api V2 同城Api V2 广播Api V2 用户Api V2 日记Api V2 相册Api V2 线上活动Api V2 论坛Api V ...

  6. 使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控

    由于最近在做监控方面的工作,因此也读了不少相关的经验分享.其中有这样一篇文章总结了一些基于Spring Boot的监控方案,因此翻译了一下,希望可以对大家有所帮助. 原文:Near real-time ...

  7. http cookie管理中cookie police下部分参数含意

      1.compatibility:推荐选择此种策略.这种兼容性设计要求是适应尽可能多的不同的服务器,尽管不是完全按照标准来实现的.如果你遇到了解析 Cookies 的问题,你就可能要用到这一个规范. ...

  8. tkinter中鼠标与键盘事件(十五)

    鼠标与键盘事件 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("300x200+ ...

  9. 玩转web之ligerui(二)---前缀编码生成树(分级码)实现树型表格

    请珍惜小编劳动成果,该文章为小编原创,转载请注明出处. 背景:             在ligerui中(其他uI可能也大同小异),实现树形表格可以通过父子节点,也可以通过前缀编码生成树去实现,而使 ...

  10. 用Visual Studio Code Debug世界上最好的语言(Mac篇)

    用Visual Studio Code Debug世界上最好的语言(Mac篇) 首先,你要有台Macbook Pro,接着才继续看这个教程. PS:Windows用户看这里用Visual Studio ...