操作model前需要先在文件中引入该model
from .models import TestModel
1、存储
# 方法一
test_model = TestModel()
test_model.name = 'name'
test_model.message = 'message'
test_model.save()
# 方法二
test_model = TestModel(name='name')
test_model.save()
2、读取
# 获取所有数据
list = TestModel.objects.all()
# 获取一条数据
list = TestModel.objects.get(id=1)
# 设置过滤条件
list = TestModel.objects.filter(id=1)
# 限制获取的数据(相当于sql中OFFSET 0 LIMIT 2)
TestModel.objects.order_by('name')[0:2]
# 排序
TestModel.objects.order_by("id")
# 连锁使用上面的方法
TestModel.objects.filter(name="name").order_by("id")
获取到之后遍历得到的数据 然后获取需要的字段值
image.png
3、更新数据
# 更新一条数据
test_model = TestModel.objects.get(id=1) # 先获取原始数据
test_model.name = 'name' # 修改其中的某个字段
test_model.save() # 存储
# 更新所有匹配的数据
TestModel.objects.filter(id=1).update(name='name')
# 更新所有数据
TestModel.objects.all().update(name='name')
删除数据
# 删除某一条数据
test_model = TestModel.objects.get(id=1)
test_model.delete()
# 删除匹配到的所有数据
TestModel.objects.filter(id=1).delete()
# 删除所有数据
TestModel.objects.all().delete()
model操作的其他用法
__exact 精确等于 like ‘aaa’
__iexact 精确等于 忽略大小写 ilike ‘aaa’
__contains 包含 like ‘%aaa%’
__icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以…开头
__istartswith 以…开头 忽略大小写
__endswith 以…结尾
__iendswith 以…结尾,忽略大小写
__range 在…范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
__isnull=True 与 __exact=None的区别
用法
TestModel.objects.filter(pub_date__lte=’2006-01-01′)
# ELECT * FROM blog_entry WHERE pub_date <= ’2006-01-01′;