Django 2021年最新版教程9数据库查询操作
Posted 软件工程小施同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 2021年最新版教程9数据库查询操作相关的知识,希望对你有一定的参考价值。
一、新增多条测试数据
在“【Django 2021年最新版教程8】操作mysql数据库 mysqlclient安装和使用”介绍了新增数据插入数据库的方法
二、查询类型
1. 查询所有数据的总量
total = User.objects.count()
2.查询符合条件的数据总量
total_condition = User.objects.filter(level=2).count()
3. 查询得到所有数据
查询所有用户,使用 all() 方法来查询所有内容。可用索引下标取出模型类的对象。
all_user = User.objects.all()
4.查询得到指定条件的所有数据
all_user_condition = User.objects.filter(level=2)
5. 排序
按创建时间从小到大排序,-createTime表示从大到小
all_user_by_order = User.objects.filter(level=2).order_by('createTime')
6. 根据id查询指定数据
pk=3 的意思是主键 primary key=3,相当于 id=3。因为 id 在 pycharm 里有特殊含义,是看内存地址的内置函数 id(),因此用 pk。
a_user_by_id = User.objects.filter(pk=3)
7. 只显示指定的字段
只显示id和name者两个字段
just_show_some_fields = User.objects.filter(pk=3).values("pk", "name")
8. 更多查询请参考
https://www.runoob.com/django/django-orm-1.html
三、效果
1. 增加testQueryUser函数
import datetime
import json
from django.core import serializers
from django.http import HttpResponse, JsonResponse
from django.shortcuts import render
# Create your views here.
from userWeb.models import User
def index(request):
return render(request, './userWeb/index.html')
# 加法页面
def add(request):
return render(request, './userWeb/add.html')
# 执行加法
def doadd(request):
a = request.POST['a']
b = request.POST['b']
a = int(a)
b = int(b)
result = a + b
# return HttpResponse(str(result))
context = {}
context['a'] = a
context['b'] = b
context['result'] = result
return render(request, './userWeb/add_result.html', context)
# 增加用户页面
def testUser(request):
return render(request, './userWeb/testUser.html')
# 执行增加用户
def testAddUser(request):
name = request.POST['name']
level = request.POST['level']
createTime = datetime.datetime.now()
user = User.objects.create(name=name, level=level, createTime=createTime)
context = {}
context['msg'] = '用户新增成功'
context['数据库中的id'] = user.id
return HttpResponse(str(context))
# 数据库查询
def testQueryUser(request):
total = User.objects.count() # 查询所有数据的总量
total_condition = User.objects.filter(level=2).count() # 查询符合条件的数据总量
all_user = User.objects.all() # 查询得到所有用户,使用 all() 方法来查询所有内容。可用索引下标取出模型类的对象。
all_user_condition = User.objects.filter(level=2) # 查询得到指定条件的所有用户
all_user_by_order = User.objects.filter(level=2).order_by('createTime') # 按创建时间从小到大排序,-createTime表示从大到小
a_user_by_id = User.objects.filter(pk=3) #pk=3 的意思是主键 primary key=3,相当于 id=3。因为 id 在 pycharm 里有特殊含义,是看内存地址的内置函数 id(),因此用 pk。
just_show_some_fields = User.objects.filter(pk=3).values("pk", "name") # 只显示id和name者两个字段
print(just_show_some_fields)
context = {}
context['total'] = total # 查询所有数据的总量
context['total_condition'] = total_condition # 查询符合条件的数据总量
context['all_user'] = serializers.serialize("json", all_user) # 查询得到所有用户,使用 all() 方法来查询所有内容。可用索引下标取出模型类的对象。
context['all_user_condition'] = serializers.serialize("json", all_user_condition) # 查询得到指定条件的所有用户
context['all_user_by_order'] = serializers.serialize("json", all_user_by_order) # 按创建时间从小到大排序,-createTime表示从大到小
context['a_user_by_id'] = serializers.serialize("json", a_user_by_id) #pk=3 的意思是主键 primary key=3,相当于 id=3。因为 id 在 pycharm 里有特殊含义,是看内存地址的内置函数 id(),因此用 pk。
#objects.values()返回django.db.models.query.QuerySet对象,需要将ValuesQuerySet对象需要先转换成list
context['just_show_some_fields'] = json.dumps(list(just_show_some_fields)) # 只显示id和name者两个字段
return JsonResponse(context)
2. 修改urls.py
3. 运行效果
以上是关于Django 2021年最新版教程9数据库查询操作的主要内容,如果未能解决你的问题,请参考以下文章
Django 2021年最新版教程20python for循环遍历queryset
Django 2021年最新版教程17数据库操作 models 存在更新 不存在新建update_or_create
Django 2021年最新版教程29django项目部署到华为云(ubuntu virtualenv mysql方式)