Django ORM
https://docs.djangoproject.com/zh-hans/5.0/topics/db/queries
https://pythondjango.cn/django/basics/6-models-queryset-API/
查询
__isnull
判断 NULL
python
Blog.objects.filter(content__isnull=True)
__contains
包含
python
Blog.objects.filter(content__contains='python')
Blog.objects.filter(content__icontains='python')
__contains
区分大小写__icontains
不区分大小写
__in
/ __range
范围
python
Blog.objects.filter(id__in=[1, 4, 7])
Blog.objects.filter(id__range=[2, 5])
__gt
/ __lt
大小比较
python
Blog.objects.filter(id__lte=10)
__gt
大于__gte
大于等于__lt
小于__lte
小于等于
order_by
排序
python
Blog.objects.filter(id__lte=10).order_by(id)
Blog.objects.filter(id__lte=10).order_by(-id)
-
表示逆序
Q
对象
Q
对象用于使用或(OR
)关系连接多条查询语句
python
from django.db.models import Q
Blog.objects.filter(
Q(id__lte=10) |
Q(username='zhangsan') |
~Q(content__contains='python')
)
Q
对象前面加~
表示否定
操作对象
复制
python
a = Blog.objects.get(id=1)
a.id = None # 通过设置主键 id 为 None 来复制对象
a.save()
删除
python
Blog.objects.filter(id__gt=1).delete()
更新
python
a = Blog.objects.get(id=1)
data = {
'username': 'lisi',
'content': None,
'like': 99,
}
a.__dict__.update(**data)
转为 dict 类型
python
res = Blog.objects.get(id=1).__dict__
# res = model_to_dict(res) # 使用 model_to_dict 不会返回 auto now 的时间字段
Blog.objects.filter(id__gt=1).values()