字段类型控制: 首先导入 import django.db.models
- AutoField:自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性。
- BooleanField:布尔字段,值为True或False。
- NullBooleanField:支持Null、True、False三种值。
- CharField(max_length=字符长度):字符串。TextField:大文本字段,一般超过4000个字符时使用。
- 参数max_length表示最大字符个数。
- IntegerField:整数。
- DecimalField(max_digits=None, decimal_places=None):十进制浮点数。FloatField:浮点数。
- 参数max_digits表示总位数。
- 参数decimal_places表示小数位数。
- DateField[auto_now=False, auto_now_add=False]):日期。TimeField:时间,参数同DateField。
- 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false。
- 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false。
- 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误。
- DateTimeField:日期时间,参数同DateField。
- FileField:上传文件字段。
- ImageField:继承于FileField,对上传的内容进行校验,确保是有效的图片。
关系:
1 一对多关系
models.ForignKey() 外键约束
定义在多类中
2 多对多关系
models.ManyToManyField()
定义在哪一个都行
3 一对一关系
models.OntoOneField()
定义在哪一个类都可以
选项
1. blank 选项
该选项是一个布尔值,为 True时,字段可以为空,为False时,字段为必填。CharField和TextField是用空字符串来存储空值的。
2. null 选项
该选项也是一个布尔值,为 True时,Django用Null来存储空值。日期型、时间型和数字型字段不接受空字符串。所以设置IntegerField,DateTimeField型字段为空时,需要将blank和null同时设置为True才行。
3. max_length 选项
设置CharField型字段的最大长度
4. choices 选项
例子:
class User(models.Model):
SEX_CHOICES = (
(1, '男'),
(2, '女'),
)
name = models.CharField(max_length=25)
sex = models.IntegerField(choices=SEX_CHOICES)
通过choices选项指定一个例子中格式的元组,可以在后台出现一个选择列表。详细介绍看官网Model Field Reference
5. default 选项
为字段设置一个默认值
6. verbose_name 选项
该字段会在admin后台显示名称
7. unique 选项
设置为True时,此字段在数据库中必须是唯一的。
除了ManyToManyField\OneToOneField和FileField 以外的其他字段类型都可以使用这个设置。
8. primary_key 选项
如果设置为True,则该字段成为Model的主键,django默认为自动生成一个主键id。
9. help_text 选项
会在form表单控件中显示help文本。
10. unique_for_date 选项
设置一个DateField和DateTimeField字段时,表示要求该字段相应的日期字段值是唯一的。
例如: 你有一个title 字段设置为unique_for_date=”pub_date”,那么Django将不允许记录具有相同的title和pub_date.
11. unique_for_month 选项
与 unique_for_date类似,只要求字段对月份是唯一的。
12. unique_for_year 选项
只对年份要求唯一。