1 字段类型
1.1 数值型
字段 |
说明 |
AutoField |
主键自增 int(11) |
IntegerField |
有符号整数 int(11) |
PostiveIntegerField |
正整数 init(11) |
SmallInteterField |
整数 smallint |
DecimalField |
定点数 decimal max_digits:总位数,decimal_places:小数位 |
BooleanField |
布尔 tinyint(1) |
1.2 字符型
字段 |
说明 |
CharField |
varchar max_length:最大长度 |
TextField |
大文本longtext |
URLField |
字符串 ********* |
UUIDField |
char(32) |
EmailField |
email |
FileField |
文件 |
ImageField |
图片 |
1.3 日期类型
字段 |
说明 |
DateField |
date |
DateTimeField |
datetime |
TimeField |
time |
1.4 关系类型
字段 |
说明 |
ForeignKey |
多对一 |
OneToOneField |
一对一 |
ManyToManyField |
多对多 |
- through
- on_delete
- related_name
2 字段约束
2.1 表内约束
字段 |
说明 |
db_index |
建立索引 |
db_column |
字段名 |
primary_key |
主键 |
null |
表内为空 |
unique |
唯一 |
unique_for_date |
日期唯一 |
unique_for_year |
年份唯一 |
unique_for_month |
月份唯一 |
default |
默认值 |
2.2 业务层约束
字段 |
说明 |
blank |
提交可以为空 |
chioces |
选项 |
editable |
是否可编辑 |
verbose_name |
业务层展示名字 |
error_message |
验证失败的异常提示 |
validators |
自定义检验 |
help_text |
字段提示语 |
3 QuerySet接口
3.1 链式调用接口
字段 |
说明 |
all() |
查询所有 |
filter(条件) |
按条件查询 |
exclude(条件) |
查询不满足条件的 |
reverse() |
把QuerySet结果倒叙排列 |
distinct() |
去重 |
none |
返回空的QuerySet |
3.2 非链式调用接口
字段 |
说明 |
get |
返回满足条件的唯一结果,多或没有满足都报异常 |
create |
写入数据库并创建对象 |
get_or_create |
没有get到就create |
update_or_create |
没有update到就create |
count |
QuerySet的结果数量 |
latest |
最新的一条记录 必填字段:field_name,按字段排序的最新一条 |
earliest |
最早的一条记录 必填字段:field_name,按字段排序的最早一条 |
first |
QuerySet第一条 |
last |
QeurySet最后一条 |
exists |
是否存在 |
bulk_create |
多条创建,返回list |
in_bulk |
批量查询 |
update |
更新 |
delete |
删除 |
values |
返回字段值 |
values_list |
返回tuple的QuerySet |
user_s = User.objects.bulk_create([User(name='name%s' % i) for i in range(10)])
user_latest = User.objects.latest(field_name='id')
3.3 进阶接口
字段 |
说明 |
defer |
需要的字段延时加载 |
only |
只加载指定字段 |
select_related |
多对一查询,只能从多中查一,不能一中查多 |
prefetch_related |
多对多关联查询 |
topic_s = Topic.objects.all().defer('name')
topic_s = Topic.objects.all().select_related('sender')
topic_s = Topic.objects.all().prefetch_related('collectors')
only案例同defer
3.4 字段查询
字段 |
说明 |
contains |
包含 |
icontains |
包含、忽略大小写 |
exact |
相等 |
iexact |
相等、忽略大小写 |
in |
范围查询 |
gt |
大于 |
gte |
大于等于 |
lt |
小于 |
lte |
小于等于 |
startwith |
开头 |
istartwith |
开头、忽略大小 |
endswith |
结尾 |
iendswith |
结尾、忽略大小 |
range |
范围查询 |
3.5 进阶查询
字段 |
说明 |
F |
表内字段比较 |
Q |
逻辑比较 |
Count |
个数 |
Sum |
求和 |
User.objects.get(id=Count('user')
User.objects.get(id=Sum('money'))