ORM修改步骤及更新功能的实现

1.修改数据的步奏

1.1 单个数据的修改

  1. 查询:通过get()得到要修改的实体对象
  2. 改:对对象.属性进行修改
  3. 保存
b = Book.objects.get(id=1)
b.price = 22
b.save()

1.2 批量数据修改

调用QuerySet的update


b = Book.objects.filter(price__gt=30)
b.update(price=0)

2.制作”更新书籍”的功能

ORM修改步骤及更新功能的实现
现在需要实现点击更新按钮,就可以更改price和mark_price两个值,然后保存到数据库,刷新页面后就能看见修改后的值。

; 2.1 实现思路

  1. 点击更新后,通过get方法在地址传入书籍的id,路由试到修改页面。
  2. 修改页面通过传入的id通过视图层找到数据库中的条目,显示在模板层
  3. 两个价格通过post方法提交数据到视图层完成数据的更新,然后返回一个302跳转。

2.2 实现过程

2.2.1 视图层的处理,需要分别处理GET和POST请求。

场景均是单条数据的修改,使用get方法来获取数据的对象。
处理GET请求跳转到更新页面,处理POST请求提交数据到数据库。

def update_book(request, book_id):

    try:
        book = Book.objects.get(id=book_id)
    except Exception as e:
        print("查找对象发现错误:%s"%(e))
        return HttpResponse('查找对象发现错误')

    if request.method == 'GET':
        return render(request, 'bookstore/update_book.html',locals())
    elif request.method == 'POST':

        price = request.POST['price']
        mark_price = request.POST['mark_price']

        book.price = price
        book.mark_price = mark_price

        book.save()

        return HttpResponseRedirect('/bookstore/all_book')

2.2.2 模板制作

模板中,仅对两个价格可以开放修改,其他均添加了disabled
,因为价格要修改,所以要定义个name

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>价格调整title>
head>
<body>
<form action="/bookstore/update_book/{{ book.id}}" method="post">
    <p>
        书名:<input type="text" value="{{ book.title }}" disabled="disabled">
    p>
    <p>
        出版社:<input type="text" value="{{ book.pub }}" disabled="disabled">
    p>
    <p>
        成本价:<input type="text" value="{{ book.price }}" name="price">
    p>
     <p>
        标价:<input type="text" value="{{ book.mark_price }}" name="mark_price">
    p>
    <p>
        <input type="submit" value="更新">
    p>
form>
body>
html>

2.2.3 绑定路由

from . import views
from django.urls import path
urlpatterns = [
    path('all_book', views.all_book),

    path('update_book/', views.update_book)
    ]

2.3 实现效果

ORM修改步骤及更新功能的实现
ORM修改步骤及更新功能的实现
点击更新后
ORM修改步骤及更新功能的实现

Original: https://blog.csdn.net/weixin_44254898/article/details/122834701
Author: 银行上班的法学程序猿
Title: ORM修改步骤及更新功能的实现

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/733965/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球