【Django 2021年最新版教程10】数据库修改更新update操作

一、新增多条测试数据

在“【Django 2021年最新版教程8】操作Mysql数据库 mysqlclient安装和使用”介绍了新增数据插入数据库的方法

二、修改操作

1. 修改views.py

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)

# 数据库查询
def testUpdateUser(request):

    # 查询出指定的用户
    userid=request.GET.get('userid', None)
    if userid is None:
        return HttpResponse("必须传递userid参数")

    # 修改前
    before_update = User.objects.filter(pk=userid)  #pk=3 的意思是主键 primary key=3,相当于 id=3。因为 id 在 pycharm 里有特殊含义,是看内存地址的内置函数 id(),因此用 pk。
    context = {}
    context['before_update'] = serializers.serialize("json", before_update)

    # 将该用户的level修改为10,返回值:整数,受影响的行数
    result = User.objects.filter(pk=userid).update(level=10)

    # 修改后
    after_update = User.objects.filter(pk=userid)  #pk=3 的意思是主键 primary key=3,相当于 id=3。因为 id 在 pycharm 里有特殊含义,是看内存地址的内置函数 id(),因此用 pk。

    context['after_update'] = serializers.serialize("json", after_update)
    context['the_number_of_rows_affected'] = result

    return JsonResponse(context)

update返回值是受影响的行数,不是成功修改的行数。

2. 修改urls.py

3. 效果

 

三、还有一种更新方法

请参考https://www.runoob.com/django/django-orm-1.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件工程小施同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值