56_Django数据库_ORM外键删除操作详解
1. 級聯操作
繼續用上一節的項目案例,在article下的views.py文件中更新代碼:
將函數映射到urls文件中
from django.urls import path from . import viewsapp_name = 'article'urlpatterns = [path('',views.index,name='index'),path('delete/',views.delete_view,name='delete'), ]保存后,瀏覽器中打開http://127.0.0.1:8000/delete/網址,category表中的第一條數據被刪除,article表中id=1類別的內容也會被刪除。
2. PROTECT受保護的
如果外鍵被引用,那么將不能被刪除
在category表中創建一條數據如下
在article表中創建一條數據,category_id=2,具體如下:
在project下的models.py文件中更新代碼如下:
將article下的views.py文件更新代碼如下:
from django.shortcuts import render from .models import Category,Article from django.http import HttpResponsedef index(request): article = Article.objects.first()print(article.category.name)return HttpResponse("success")def delete_view(request):#pk變為2category = Category.objects.get(pk=2)category.delete()return HttpResponse("刪除成功")保存后,打開http://127.0.0.1:8000/delete/網址,報錯,提示不能刪除。
3. SET_NULL設置為空
在article下的models.py文件中更新代碼:
把模型映射到數據庫當中,(具體參考47_Django數據庫_創建和映射ORM模型)
保存后,打開http://127.0.0.1:8000/delete/網址
運行成功,這樣category下面的數據刪除,article表中的數據未刪除,category變為null。
4. SET_DEFAULT設置默認值
在category表中,建立一個新的分類,id自動設置為3,名稱設置為“財經欄目”;再新建一個分類,id自動設置為4,名稱設置為“默認分類”。
article文章中的書category_id設置為3。
更新article下models.py中的代碼:
更新views.py中的代碼
from django.shortcuts import render from .models import Category,Article from django.http import HttpResponsedef index(request):article = Article.objects.first()print(article.category.name)return HttpResponse("success")def delete_view(request):#此處調整pk=3category = Category.objects.get(pk=3)category.delete()return HttpResponse("刪除成功")保存后,打開http://127.0.0.1:8000/delete/網址
運行成功,這樣category下面的數據刪除,article表中的數據未刪除,category變為默認值。
5. SET()將函數值作為外鍵值
為了演示方便,分別在category里新建一條數據
更新article表格里面的分類
更新article下models.py里面的代碼
修改views.py里面的代碼
from django.shortcuts import render from .models import Category,Article from django.http import HttpResponsedef index(request): article = Article.objects.first()print(article.category.name)return HttpResponse("success")def delete_view(request):#pk改為5category = Category.objects.get(pk=5)category.delete()return HttpResponse("刪除成功")來源:知了學院
總結
以上是生活随笔為你收集整理的56_Django数据库_ORM外键删除操作详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021我上岸了!分享我的招银网络科技
- 下一篇: linux下wxr的权限,Linux下的