02.django升级打怪学习记

定义属性

·django根据属性的类型确定以下信息

·当前选择的数据库支持字段的类型

·渲染管理表单时使用的默认html控件

·在管理站点最低限度的验证

django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认的主键列

 

· 属性命名限制

·遵循标识符规则

·由于django的查询方式,不允许使用连续的下划线

 

库:导入from django.db import models

 

逻辑删除

对于重要数据都做逻辑删除,不做物理删除,实现方法是定义isDelete属性,类型为BooleanField,默认值为False

 

字段类型

·AutoField

·一个根据实际ID自动增长的IntegerField,通常不指定如果不指定,一个主键字段将自动添加到模型中

CharField(max_length=字符长度)

·字符串,默认的表单样式是 TextInput

TextField

·大文本字段,一般超过4000使用,默认的表单控件是Textarea

IntegerField

·整数

DecimalField(max_digits=None, decimal_places=None)

·使用python的Decimal实例表示的十进制浮点数

FloatField

·用Python的float实例来表示的浮点数

·BooleanField

·true/false 字段,此字段的默认表单控制是CheckboxInput

·NullBooleanField

·支持null、true、false三种值

·DateField([auto_now=False, auto_now_add=False])

·使用Python的datetime.date实例表示的日期

TimeField

·使用Python的datetime.time实例表示的时间,参数同DateField

DateTimeField

使用Python的datetime.datetime实例表示的日期和时间,参数同DateField

FileField

一个上传文件的字段

ImageField

继承了FileField的所有属性和方法,但对上传的对象进行校验,确保它是个有效的image

 

 

字段选项

通过字段选项,可以实现对字段的约束

在字段对象时通过关键字参数指定

null

·如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False,数据库范畴的概念

blank

·如果为True,则该字段允许为空白,默认值是 False,表单验证范畴

db_column

·字段的名称,如果未指定,则使用属性的名称

db_index

若值为 True, 则在表中会为此字段创建索引

default

默认值

primary_key

若为 True, 则该字段会成为模型的主键字段

unique

如果为 True, 这个字段在表中必须有唯一值

 

关系

字段选项

概念

示例

ForeignKey

一对多,将字段定义在多的端中

grade.students_set

Many ToManyField

多对多,将字段定义在两端中

student.sgrade_id

OneToOneField

一对一,将字段定义在任意一端中

grade.students

 

模型成员objects

 

 

fiter:返回符合帅选条件的数据集

exclude:返回不符合帅选条件的数据集

示例:

 

 

 

 

查询集和过滤器

在管理器上调用方法返回查询集,支持链式:

all:返回所有数据

 

 

 

filter:返回符合条件的数据

 

 

 

exclude:过滤掉符合条件的数据

order_by:排序

 

values:一条数据就是一个字典,返回一个列表

get:返回一个满足条件对象

first:查询集中的第一个对象

last:返回查询集中的最后一个对象

count:返回当前查询集中的对象个数

exists:判断查询集中是否有数据,如果有数据返回True没有反之

 

限制查询集合查询集的缓存

 

 

 

 

字段查询:

*属性__运算符=值

*gt/lt/gte/lte/in/contains

*startswith 以xx开始,本质也是like

*endswith以xx结束

*exact精确

*前面同时添加i,ignore忽略(iexact / icontains /istartswith / iendswith

 

比较运算符:

跨关系查询:模型类名_属性名_比较运算符,实际上就是处理数据库中的join

 

 

 

 

模型成员

*类属性

显性:开发者手动书写的属性

隐性:ORM自动生成的;如果你把隐形属性手动声明,系统不会为你产生隐性属性

 

 

 

 

备注:

*对象方法:可以调用对象的属性,也可以调用类的属性

*类方法:不能调用对象属性,只能调用类属性

*静态方法:什么都不能调用,不能获取对象属性,爷不能获取类属性,只能在自身

 

状态码:

*2xx:请求成功

*3xx:转发或重定向

*4xx:客户端错误

*5xx:服务器错了/后端开发人员最不想看到

 

F类用途

*可以获取我们属性的值

*可以实现一个模型的不同属性的运算操作

*还可以支持算术运算

 

Q类用途:

*可以对条件进行封装

*封装之后,可以支持逻辑运算(与&或|非~)

 

posted @ 2020-01-08 16:36  艾小小雨  阅读(188)  评论(0编辑  收藏  举报