一个模型最重要也是唯一必需的部分,是它定义的数据库字段。
字段名称限制:
1.一个字段名不能是一个Python保留字,因为那样会导致一个Python语法错误。
2.一个字段名不能包含连续的一个以上的下划线,因为那是Django查询语句的语法。
字段列表纵览表
字段名 | 参数 | 意义 |
AutoField |
| 一个能够根据可用ID自增的 IntegerField |
BooleanField |
| 一个真/假(true/false)字段 |
CharField | (max_length) | 一个字符串字段,适用于中小长度的字符串。对于长段的文字,请使用 TextField |
CommaSeparatedIntegerField | (max_length) | 一个用逗号分隔开的整数字段 |
DateField | ([auto_now], [auto_now_add]) | 日期字段 |
DateTimeField |
| 时间日期字段,接受跟 DateField 一样的额外选项 |
EmailField |
| 一个能检查值是否是有效的电子邮件地址的 CharField |
FileField | (upload_to) | 一个文件上传字段 |
FilePathField | (path,[match],[recursive]) | 一个拥有若干可选项的字段,选项被限定为文件系统中某个目录下的文件名 |
FloatField | (max_digits,decimal_places) | 一个浮点数,对应Python中的 float 实例 |
ImageField | (upload_to, [height_field] ,[width_field]) | 像 FileField 一样,只不过要验证上传的对象是一个有效的图片。 |
IntegerField |
| 一个整数。 |
IPAddressField |
| 一个IP地址,以字符串格式表示(例如: "24.124.1.30" )。 |
NullBooleanField |
| 就像一个 BooleanField ,但它支持 None /Null 。 |
PhoneNumberField |
| 它是一个 CharField ,并且会检查值是否是一个合法的美式电话格式 |
PositiveIntegerField |
| 和 IntegerField 类似,但必须是正值。 |
PositiveSmallIntegerField |
| 与 PositiveIntegerField 类似,但只允许小于一定值的值,最大值取决于数据库. |
SlugField |
| 嵌条 就是一段内容的简短标签,这段内容只能包含字母、数字、下 划线或连字符。通常用于URL中 |
SmallIntegerField |
| 和 IntegerField 类似,但是只允许在一个数据库相关的范围内的数值(通常是-32,768到 +32,767) |
TextField |
| 一个不限长度的文字字段 |
TimeField |
| 时分秒的时间显示。它接受的可指定参数与 DateField 和 DateTimeField 相同。 |
URLField |
| 用来存储URL的字段。 |
USStateField |
| 美国州名称缩写,两个字母。 |
XMLField | (schema_path) | 它就是一个 TextField ,只不过要检查值是匹配指定schema的合法XML。 |
通用字段参数列表(所有的字段类型都可以使用下面的参数,所有的都是可选的。)
参数名 | 意义 |
null | 如果设置为 True 的话,Django将在数据库中存储空值为 NULL 。默认为 False 。 |
blank | 如果是 True ,该字段允许留空,默认为 False 。 |
choices | 一个包含双元素元组的可迭代的对象,用于给字段提供选项。 |
db_column | 当前字段在数据库中对应的列的名字。 |
db_index | 如果为 True ,Django会在创建表格(比如运行 manage.py syncdb )时对这一列创建数据库索引。 |
default | 字段的默认值 |
editable | 如果为 False ,这个字段在管理界面或表单里将不能编辑。默认为 True 。 |
help_text | 在管理界面表单对象里显示在字段下面的额外帮助文本。 |
primary_key | 如果为 True ,这个字段就会成为模型的主键。 |
radio_admin | 默认地,对于 ForeignKey 或者拥有 choices 设置的字段,Django管理界面会使用列表选择框(<select>)。如果 radio_admin 设置为 True 的话,Django就会使用单选按钮界面。 |
unique | 如果是 True ,这个字段的值在整个表中必须是唯一的。 |
unique_for_date | 把它的值设成一个 DataField 或者 DateTimeField 的字段的名称,可以确保字段在这个日期内不会出现重复值。 |
unique_for_month | 和 unique_for_date 类似,只是要求字段在指定字段的月份内唯一。 |
unique_for_year | 和 unique_for_date 及 unique_for_month 类似,只是时间范围变成了一年。 |
verbose_name | 除 ForeignKey 、 ManyToManyField 和 OneToOneField 之外的字段都接受一个详细名称作为第一个位置参数。 |