前提(初始表資料)
book表和author表為多對多關係,一本圖書可能有多個作者,乙個作者可能有多本書
新增add(*) : 可以為數字(即id);物件;物件列表
book表
author表
book_authors表 (關係表)
from django.shortcuts import render # 匯入顯示頁面的模組
from django.http import httpresponse # 匯入顯示字串的模組
from .models import * # 匯入操作的模型類
import datetime
# create your views here.
def more_to_more_add_db(request):
return httpresponse("新增成功")
django_study.django_study.urls:繫結url與檢視函式
url(r'^more_to_more_add_db/$', more_to_more_add_db)
新增操作:方式一
def more_to_more_add_db(request):
book_obj = book.objects.create(name="介面測試", price=30, pub_date=pub_date=datetime.datetime.now())
author_obj = author.objects.get(id=1)
book_obj.authors.add(author_obj) # 直接新增物件
return httpresponse("新增成功")
啟動狀態執行後檢視資料庫book表
book_authors表
新增操作:方式二
def more_to_more_add_db(request):
book_obj = book.objects.create(name="介面自動化測試", price=40, pub_date=datetime.datetime.now())
book_obj.authors.add(1) # 直接新增author表的id(wang01作者)
return httpresponse("新增成功")
啟動狀態執行後檢視資料庫book表
book_authors表
新增操作:方式三(對應多個作者)
def more_to_more_add_db(request):
book_obj = book.objects.create(name="效能測試", price=45, pub_date=datetime.datetime.now())
book_obj.authors.add(1,2) # 多個用逗號分隔
return httpresponse("新增成功")
啟動狀態執行後檢視資料庫book表
book_authors表
新增操作:方式四(對應作者表中的所有作者)
def more_to_more_add_db(request):
book_obj = book.objects.create(name="jmeter介面", price=45, pub_date=datetime.datetime.now())
author_obj = author.objects.all()
book_obj.authors.add(*author_obj) # 如果新增的是乙個可迭代物件(list或tupule),前面加上*
return httpresponse("新增成功")
啟動狀態執行後檢視資料庫book表
book_authors表
Django 44 ORM多對多刪除
前提 初始表資料 remove 刪除,可以為數字 即id 物件 物件列表 delete篩選後刪除 clear清空 book表 author表 book authors表 關係表 from django.shortcuts import render 匯入顯示頁面的模組 from django.htt...
Django學習 9 ORM多對多操作
建立多對多 方式一 自定義關係表 class host models.model nid models.autofield primary key true hostname models.charfield max length 32,db index true ip models.generic...
Django中ORM多對多三種建立方式
一 多對多三種建立方式 1.全自動 利用orm自動幫我們建立第三張關係表class book models.model name models.charfield max length 32 authors models.manytomanyfield to author class author ...