1. 程式人生 > 其它 >django-orm更新資料

django-orm更新資料

django-orm更新資料

單個數據修改(更新單個數據)

In [6]: b1=Book.objects.get(id=1)
In [7]: b1.price
Out[7]: Decimal('20.00')
In [8]: b1.price=22

mysql> select * from book where id=1;
+----+--------+-------+--------------+-----------------------+
| id | title  | price | market_price | pub                   |
+----+--------+-------+--------------+-----------------------+
|  1 | python | 20.00 |        25.00 | 清華大學出版社         |
+----+--------+-------+--------------+-----------------------+
1 row in set (0.00 sec)

In [9]: b1.save()

mysql> select * from book where id=1;
+----+--------+-------+--------------+-----------------------+
| id | title  | price | market_price | pub                   |
+----+--------+-------+--------------+-----------------------+
|  1 | python | 22.00 |        25.00 | 清華大學出版社         |
+----+--------+-------+--------------+-----------------------+
1 row in set (0.00 sec)

批量資料更新

In [10]: b2=Book.objects.filter(pub='清華大學出版社')
In [11]: b2.update(price=1)
Out[11]: 3
In [12]: for i in b2:
    ...:     print(i.price)
    ...:
1.00
1.00
1.00

views.py

def update(request,book_id):
    try:
        book=Book.objects.get(id=book_id)
    except Exception as e:
        print('---update book error is %s----'%(e))
        return HttpResponse('更新書籍不存在')
    if request.method=='GET':
        id=book.id
        title=book.title
        pub=book.pub
        price=book.price
        market_price=book.market_price
    
        return render(request,'bookstore/update.html',locals())


    elif request.method=='POST':
        id=book.id
        update_book=Book.objects.get(id=id)
        price=request.POST.get('price')
        market_price=request.POST.get('market_price')
        update_book.price=price
        update_book.market_price=market_price
        update_book.save()
        url=reverse('all_book')
        return HttpResponseRedirect(url)
        # return HttpResponseRedirect('/bookstore/all_book')


all_book.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>顯示所有書籍</title>
</head>
<body>
    <table border="1">
        <tr>
            <th>id</th>
            <th>title</th>
            <th>pu</th>
            <th>price</th>
            <th>market_price</th>
            <th>op</th>
        </tr>
        {%  for info in  all_book %}
        <tr>
             <td>{{info.id}}</td>
             <td>{{info.title}}</td>
            <td>{{info.pub}}</td>
            <td>{{info.price}}</td>

            <td>{{info.market_price}}</td>
            <td>
                <a href="{% url 'update' info.id %}">更新</a>
                <a href="">刪除</a>
            </td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>

update.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>更新資料</title>
  
</head>
<body>
    <form action="{% url 'update' id %}" method="POST">
        {% csrf_token%}
     
        <span>title</span><input type="text"  value={{title}} disabled='disabled'> <br>
        <span>pub</span><input type="text"  value={{pub}} disabled='disabled'> <br>
        <span>price</span><input type="text" name="price" value={{price}}> <br>
        <span>market_price</span><input type="text" name="market_price" value={{market_price}}> <br>
        <input type="submit" value="更新">
    </form>
    
</body>
</html>

urls.py

from django.contrib import admin
from django.urls import path,include

from . import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('showimg/',views.showimg),

    path('music/',include('music.urls')),
    path('bookstore/',include('bookstore.urls'))
]

頁面顯示