以下参数是全部字段类型都可用的,而且是可选的
null
如果为True,Django将在数据库中将空值存储为NULL。默认值为False
对于字符串字段,如果设置了null=True意味着“无数据”有两个可能的值,NULL和空字符串,在大多数情况下,我们在数据库中存储无数据的字符串时,不会区分到底是NULL还是空字符串,如果存储了两个值势必会增加操作数据的难度。django的惯例是使用空字符串,所以我们在创建字符串字段(如:CharField、TextField)尽量不要设置null=True。null属性对于字符串字段也并非没有用处,比如这种情况就必须设置null=True,如当CharField同时具有blank=True和unique=True属性是,在这种情况下,需要设置null=True,以便在数据库中使用NULL保存对个对象,从而达到唯一性(NULL!=NULL)
如果希望BooleanField接受null值,请使用NULLBolleanField类来代替
注意:在使用Oracle数据库时,数据库使用NULL来表示空字符串,与null这个属性无关
blank
如果为True,字段允许为空,默认False
与null不同,null纯粹是数据库范畴,blank是数据验证范畴,如果blank=True,字段可为空,否则为必填字段
choices
它是一个可迭代的结构(如列表、元组),由可迭代的二元元组表示,用来给字段提供选项
每个元组中的第一个元素,是存储在数据库中的值;第二个元素是使人容易理解的描述。 比如:
YEAR_IN_SCHOOL_CHOICES = ( ('FR', 'Freshman'), ('SO', 'Sophomore'), ('JR', 'Junior'), ('SR', 'Senior'), )