ORM 单表操作 & 查询API
2021-03-07 01:26
标签:return list() contains tar tle 主键 print 下划线 imp 增:book = Book.objects.create(title=title, price=price, pub_date=pub_date, publish=publish) 删:Book.objects.filter(nid=book_nid).delete() QuerySet对象和model对象都可以调用 改:Book.objects.filter(nid=book_nid).update(title=title,..........) QuerySet对象调用 查: book.objects.all(): select * from book ? book.objects.all().values(‘title‘): select title from book ? 可以简写为: book.objects.values(‘title‘) models对象: 记录对象, 取值: model对象.属性-- book.title QuerySet对象: modes对象的列表, 取值: QuerySet对象[0].属性--[book_obj1, book_obj2,......]--->book_lst[0].title 链式操作: 如果返回的是QuerySet对象,则可以继续调用QuerySet对象的方法 mysql日期查询问题:如果明明有结果,却查不出结果,是因为mysql数据库的时区和django的时区不同导致的 django中的settings配置文件里面的USE_TZ = True改为False ORM 单表操作 & 查询API 标签:return list() contains tar tle 主键 print 下划线 imp 原文地址:https://www.cnblogs.com/relaxlee/p/12843067.htmlORM 单表操作 & 查询API
views.py
from models import Book
# 1 objects 管理器创建 model对象
book = Book.objects.create(title=‘python‘, price=120, pub_date=‘2020-01-01‘, publish=‘上海出版社‘)
# 2 类实例化创建(不推荐)model对象
book = Book(title=‘python‘, price=120, pub_date=‘2020-01-01‘, publish=‘上海出版社‘)
book.save()
# 3 批量创建
obj_list = []
for i in range(100):
obj = Book(title=‘python%s‘ % i, price = 120)
obj_list.append(obj)
Book.objects.bulk_create(objs)
# 4 有就更新,没有就创建 update_or_create
Book.objects.update_or_create(title=‘python‘, default={price:200})
# 查找title为‘python‘的记录,如果有就把price更新为200
# 没有就创建这条记录
# 关键字参数可以将字典打散传参
book = Book.objects.creat(**{title:‘python‘, price:120})
方法
说明
示例
调用者
返回值
all()
所有
Book.objects.all()
objects管理器
QuerySet对象
filter(**kwargs)
条件筛选
Book.objects.filter(titile=‘python‘)
objects管理器
QuerySet对象
get(**kwargs)
唯一记录,
0个或超过1个会报错Book.objects.get(nid=1)
objects管理器
models对象
first()
查询到的第一条记录
Book.objects.all().first()
QuerySet对象
models对象
last()
查询到的最后条记录
Book.objects.all().last()
QuerySet对象
models对象
exclude(**kwargs)
排除
Book.objects.exclude(titie=‘python‘)
objects管理器QuerySet对象
QuerySet对象
order_by(*args)
排序:-降序
Book.objects.all().order_by(‘-price‘)
QuerySet对象
QuerySet对象
cout()
统计数量
Book.objces.all().count()
QuerySet对象
int
reverse()
列表反转排序必须在order_by之后
Book.objects.all().order_by(‘id‘).reverse()
QuerySet对象
QuerySet对象
exists()
是否存在记录,
只检查1条记录Book.objects.all().exists()
QuerySet对象
bool
values()
针对性的取字段值
Book.objects.all().values(‘title‘,‘price‘)
QuerySet对象
QuerySet键值对字典对象
values_list()
针对性的取字段的值
Book.objects.all().values_list(‘title‘)
QuerySet对象
QuerySet 记录元组对象
distinct()
去重
Book.objects.values(‘price‘).distinct()
QuerySet对象
QuerySet对象
模糊查询
双下划线
条件
示例
__gt
>
Book.objects.filter(price__gt=100)
__lt
Book.objects.filter(price__lt=100)
__gte
>=
Book.objects.filter(price__gte=100)
__lte
Book.objects.filter(price__lte=100)
__startswith
以指定字符串开头
Book.objects.filter(title__startswith="py")
__istartswith
以指定字符串开头,不区分大小写
Book.objects.filter(title__istartswith="py")
日期字段__year
年份=
Book.objects.filter(pub_date__year=2012)
日期字段__month
月份=
Book.objects.filter(pub_date__month=2012)
日期字段__year__gt
年份>
Book.objects.filter(pub_date__year__gt=2012)
__in=[100,200,300]
3个值任意一个
Book.objects.filter(price__in=[100,200,300])
__range=[100,200]
sql:between and,>=100
Book.objects.filter(price__range=[100,200])
__contains
包含
Book.objects.filter(title__contains=‘py‘)
__icontains
包含,不区分大小写
from django.shortcuts import render, HttpResponse, redirect
from django.urls import reverse
from app01.models import Book
# Create your views here.
################## 增加记录 ########################
def add_book(request):
"""
book = Book.objects.create(title=‘python‘, price=‘80‘, pub_date=‘2020-01-01‘, publish="上海出版社")
"""
if request.method == ‘GET‘:
return render(request, ‘add_book.html‘, {‘mode‘: ‘新增书籍‘})
else:
# # 常规方法
# title = request.POST.get(‘title‘)
# price = request.POST.get(‘price‘)
# pub_date = request.POST.get(‘pub_date‘)
# publish = request.POST.get(‘publish‘)
# book = Book.objects.create(title=title, price=price, pub_date=pub_date, publish=publish)
# 添加记录简便方法
# print(request.POST)
"""
, ] >
"""
# 转换POST内容为字典
data = request.POST.dict()
print(data)
del data[‘csrfmiddlewaretoken‘] # 删除csrf_token键值,剩下的就是传入的表单提交的数据
print(data)
# 将字典打散为关键字参数传入,等价于Book.objects.create(title=title, price=price, pub_date=pub_date, publish=publish)
Book.objects.create(**data)
url = reverse(‘new_book‘)
return redirect(url)
def books(request):
book_lst = Book.objects.all() # 查询所有
文章标题:ORM 单表操作 & 查询API
文章链接:http://soscw.com/index.php/essay/61110.html