ORM 增刪改查
一、字段增加
#終端輸入
1.model里添加字段,
2.執行遷移命令。
3.終端里輸入默認值,繼續執行遷移命令。
#允許為空
再null=true,終端不需要輸入默認值
#設置默認值
defalult=‘xxxx‘
?
二、字段修改
1.直接修改代碼,
2,執行遷移兩條命令。
?
三、字段刪
1.對應字段注釋;
2.執行遷移兩條命令;
警告:執行完畢字段對應數據刪除,不要輕易操作
a.遷移命令執行前,注意查看修改代碼。
b.離開計算機鎖屏。
?
數據增刪改查
1.查數據
a. code
res=models.User.objects.filter(username=username)
#<querySet[<User:User object>] >類型
#可以索引,切片操作,不能負數。
#不推薦索引,推薦first()user_obj=models.User.objects.filter(username=username).first()
pw=user_obj.password#filter(username=username,password=password)
#關系是and。相當于where#------------全部查找-------------
#方法一
data=models.user.objects.filter()#方式二
models.user.objects.all()
b. html 展示
補全,for+tag
<table class="table table-bordered"><thead><tr><th>#</th><th>id</th><th>書名</th><th>出版社名稱</th><th>操作</th></tr></thead><tbody>{% for i in all_book %}<tr><td>{{ forloop.counter }}</td><td>{{ i.id }}</td><td>{{ i.title }}</td><td>{{ i.publisher.name }}</td><td><a class="btn btn-danger" href="/delete_book/?id={{ i.id }}">刪除</a><a class="btn btn-info" href="/edit_book/?id={{ i.id }}">編輯</a></td></tr>{% endfor %}</tbody>
</table>
?
2.增數據
#第一種方法
res=models.User.objects.creat(username=username,password=passoword)
#返回值,當前被創建本身。#第二種方法
user_obj=models.User(username=username,password=password)
User_obj.save() #保存數據
?
3.編輯數據
將編輯按鈕所在一行的主鍵值發送后端
利用?后面攜帶參數形式
href="/edit_book/?id={{ i.id }}"
# 取到編輯的書的id值edit_id = request.GET.get("id")# 根據id去數據庫中把具體的書籍對象拿到edit_book_obj = models.Book.objects.get(id=edit_id)
#get 請求id 網址帶?形式
edit_id = request.GET.get("id")if request.method == "POST":# 從提交的數據里面取,書名和書關聯的出版社#內置idedit_id = request.POST.get("id")new_title = request.POST.get("book_title")new_publisher_id = request.POST.get("publisher")#更新 方法一 批量更新models.Book.objects.filter(id=edit_id).update(book_title=new_title ,publisher=new_publisher_id )#只修改更新的# 更新 方法二 單獨更新。重新賦值,并保存edit_book_obj = models.Book.objects.get(id=edit_id)edit_book_obj.title = new_title # 更新書名edit_book_obj.publisher_id = new_publisher_id # 更新書籍關聯的出版社# 將修改提交到數據庫edit_book_obj.save()# 缺點是,如果字段多,更新效率低# 重新把字段寫一遍,無論修改或不修改# 返回書籍列表頁面,查看是否編輯成功return redirect("/book_list/")
?
4.刪除數據
與編輯功能邏輯相似。
delete_id = request.GET.get("id") # 從URL里面取數據#批量刪除
models.Book.objects.filter(id=delete_id).delete()
ps:
a. 刪除功能需要二次確定。
b. 內部不是真正刪除。內部有個刪除字段,僅僅修改狀態。查看不顯示。
?
?
?
?
?