Django 40 ORM多對多新增

2021-09-18 06:10:09 字數 3055 閱讀 4766

前提(初始表資料)

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 ...