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\'))
]
页面显示