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()