Django中的model

本文详细介绍了Django中的model,包括ORM基本概念、字段命名与类型、通用选项、查询函数(如filter、Q对象、F对象、聚合函数)、模型关系(一对一、一对多、多对多及自关联)、模型管理类、元数据,以及查询集的惰性查询和缓存特性。通过实例展示了如何在Django中进行数据库操作。
摘要由CSDN通过智能技术生成

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.函数名可以调用下表函数

函数名 功能</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值