Django中的model
Django中的model
一、ORM基本概念
ORM是Object Relational Mapping的缩写,是对象关系映射的意思。
简单说就是将类与表映射,属性与列映射,将复杂的sql操作变成简单的对象操作。
二、 字段命名
1、不允许使用连续下划线,这与django的查询方式有关(因为条件查询时用到了双下划线)
2、属性名=models.字段类型(选项)
三、字段类型
类型 | 描述 |
---|---|
AutoField | 自增长的整数,可以不指定,不指定时会自动创建属性名为id的自增长属性,如果类中没有primary_key字段,还会作为主键。 |
BooleanField | 布尔字段 |
NullBooleanField | 可空的布尔字段(值可以为None) |
CharField(max_length=最大长度) | 字符串,max_length是最大长度(这里有个很坑的地方,max_length最大是255,再大的话最好用TextField) |
TextField | 大文本字段,一般推荐超过4000字(实际上大于255就得用这个) |
DecimalField(max_digits=None,decimal_places=None) | 十进制浮点数,max_digits表示总位,decimal_places表示小数位 |
FloatField | 浮点数,参数与DecimalField相同 |
DateField(auto_now=False,auto_now_add=False) | 日期。auto_now表示每次对象保存时是否自动设置为当前时间,也就是说“是否为最后一次修改时间”,默认为False。auto_now_add表示是否自动以当前时间初始化对象,默认也是False。这两个参数互相排斥,不能同时为True |
TimeField | 时间,参数同DataField |
DateTimeField | 日期时间,参数同DateField |
FileField | 上传文件字段 |
ImageField | 继承于FileField,对上传的内容进行校验,保证是有效的图片 |
四、通用选项
选项名 | 描述 |
---|---|
default | 默认值 |
primary_key | 是否为主键,默认False,一般再AutoField中使用 |
unique | 是否不可重复,唯一性约束,默认False |
db_index | 是否为此字段创建索引,默认False |
db_column | 字段的名称,如果未指定,则使用属性的名称,一般可以在外键上用 |
null | 是否可空,默认False。null是针对数据库的,表示数据库中的字段能否为空 |
blank | 是否允许空白,blank是针对表单的,表示表单验证时可否可空、可不可以是一个空字符串 |
blank和null的关系可以这样看:
blank=True、null=True。统一的表明了该字段(列)是可以为空的。
blank=False、null=False。统一的表面了该字段(列)不可以为空。
blank=True、null=False。这个设定的意义在于,某些字段并不希望用户在表单中创建(如slug),而是通过在save方法中根据其他字段生成。
blank=False、null=True。这个设定不允许表单中该字段为空,但是允许在更新时或者通过shell等非表单方式插入数据该字段为空。
五、查询函数
通过模型类.objects.函数名可以调用下表函数
函数名 | 功能</ |
---|