日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Django 多對多字段的更新和插入數(shù)據(jù)實例

瀏覽:26日期:2024-10-15 10:19:38

表的普通字段 一對多字段 多對多字段 插入數(shù)據(jù)

#插入數(shù)據(jù)def add(request): G_title=request.POST.get(’title’)#-------值為:python書本 G_publish=request.POST.get(’publish’) #-------值為:1 G_authors_list=request.POST.getlist(’authors’)#-------值為:[3,7] publish_obj=Publish.objects.get(id=G_publish)#查找Publish表對應id的obj authors_obj_list=Author.objects.filter(id__in=G_authors_list)#查找Author表對應id的多個obj title #-------普通字段 publish #-------一對多外鍵 authors #-------多對多外鍵 book_obj=Book.objects.create(title=G_title,publish=publish_obj)#添加普通和一對多外鍵的值 #添加多對多外鍵的值 方式一 book_obj.authors.add(*authors_obj_list) 方式二 for obj in authors_obj_list: book_obj.authors.add(obj) return redirect(’/index/’)

表的普通字段 一對多字段 多對多字段 修改數(shù)據(jù)

def edit(request,b_id):#b_id-----為書本的id G_title=request.POST.get(’title’)#-------值為:linux書本 G_publish = request.POST.get(’publish’)#-------值為:2 G_authors_list = request.POST.getlist(’authors’)#-------值為:[3,5] book_obj = Book.objects.get(id=b_id)#查找Book表要修改的id對象 publish_obj = Publish.objects.get(id=G_publish)#查找Publish表對應id的obj author_objs = Author.objects.filter(id__in=G_authors_list)#查找Author表對應id的多個obj book_obj.title=G_title #-------修改普通字段 book_obj.publish=publish_obj #-------修改一對多字段 book_obj.authors=author_objs #-------修改多對多字段 #注意:多對多字段 必須是.all()/.filter()等的查詢集(QuerySet) book_obj.save() #-------一定得save(),才能對數(shù)據(jù)庫進行修改 return redirect(’/index/’)

補充知識:Django的ManyToManyField(多對多)的使用以及through的作用

創(chuàng)建一個經典的多對多關系:一本書可以有多個作者,一個作者可以有多本書(如下)

Django 多對多字段的更新和插入數(shù)據(jù)實例

進行數(shù)據(jù)遷移,然后我們使用python manage.py sqlmigrate app(應用名) 遷移文件名 查看一下sql語句(如下):

Django 多對多字段的更新和插入數(shù)據(jù)實例

從圖可以看出生成了三張表,一個是book(書籍)表包含id,title兩個字段,一個是author(作者表)包含id,name,email三個字段,這是我們剛剛在models.py文件中創(chuàng)建兩個模型,但是有一點需要注意的是在book表里面沒有我們創(chuàng)建的authors表,而是多了一個book_authors表,在這張表里面又多了兩個字段book_id,author_id,其實這個第三張表就是用來存放書籍和作者之間映射關系的中間表

那么我們如何進行數(shù)據(jù)的查詢呢?

1.一本書的所有作者

b = Book.objects.get(id=1) b.author.all()

2.一個作者的所有書籍:

a = Author.objects.get(id=1)a.book_set.all()

3.給多對多的字段添加值(添加多對多關系):

Django 多對多字段的更新和插入數(shù)據(jù)實例

從多對多字段中刪除值(刪除多對多關系):

Django 多對多字段的更新和插入數(shù)據(jù)實例

可以看出這個blog_book_authors是根據(jù)多對多關系自動生成的關系表,但是如果我們想要搜集關于這個作者發(fā)布某一本書籍的時間額外增加一個字段,或者說與現(xiàn)有的系統(tǒng)集成,這個關系表已經存在了,那對于這樣的情形,Django允許指定一個用于管理多對多關系的中間模型,然后就可以把這些額外的字段添加到這個中間模型中,具體的方法就是在ManyToMany字段中指定through參數(shù)指定作為中介的中間模型,修改上述models.py:

Django 多對多字段的更新和插入數(shù)據(jù)實例

查看一下此時的數(shù)據(jù)庫表結構:

Django 多對多字段的更新和插入數(shù)據(jù)實例

在創(chuàng)建BookAuthor類的最后使用了自定義的名稱,這個也可以不用指定,系統(tǒng)可以自動生成表名

仔細觀察BookAuthor這個類,也就是我們前面講到的中間模型,同時我們看到在創(chuàng)建中間模型的時候我們創(chuàng)建了兩個外鍵,這兩個外鍵定義了兩個模型之間是如何關聯(lián)到一起的

所以當創(chuàng)建多對多關系模型的時候提倡使用through參數(shù)去指定并創(chuàng)建中間模型,這樣比較方便我們進行字段的擴展

那么此時我們又該如何添加和刪除多對多關系呢?還能使用和剛剛相同的方法嗎?

# 添加作者 ringo ringo = Author.objects.create(name=’Ringo’,email=’ringo@qq.com’) # 添加作者paul paul = Author.objects.create(name=’Paul’,email=’paul@qq.com’) # 添加書籍 python book1 book1 = Book.objects.create(title=’python book1’) # 給多對多添加值也就是添加多對多關系 m1 = BookAuthor(author=ringo,book=book) # 第二種添加方式 m2 = BookAuthor.objects,create(author=paul,book=book1)

當我們使用多對多的中間模型之后,add(),remove(),create()這些方法都會被禁用,所以在創(chuàng)建這種類型的關系的時候唯一的方法就是通過創(chuàng)建中間模型的實例

以上這篇Django 多對多字段的更新和插入數(shù)據(jù)實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
午夜久久影院| 麻豆视频在线观看免费网站黄| 国产粉嫩在线观看| 超碰超碰人人人人精品| 麻豆高清免费国产一区| 久久不见久久见中文字幕免费| 国产欧美自拍| 2023国产精品久久久精品双| 日韩av一区二区三区四区| 久久精品电影| 国产a久久精品一区二区三区| 91久久亚洲| 欧美精品aa| 成人看片网站| 日本强好片久久久久久aaa| 伊人久久亚洲美女图片| 亚洲一区国产一区| 亚洲精品日本| 国产精品片aa在线观看| 国产精品久一| 天堂中文在线播放| 国产精品av一区二区| 美女国产一区| 国产视频网站一区二区三区| 国产在线观看91一区二区三区| 日韩不卡一区| 不卡在线一区| 日本国产欧美| 日韩1区2区| 国产模特精品视频久久久久| 日本午夜精品| 中文字幕在线官网| 狠狠干综合网| 日韩av不卡在线观看| 欧美精品1区| 久久久久午夜电影| 蜜桃av一区二区在线观看| 国产午夜久久av| 麻豆成全视频免费观看在线看| 欧美不卡高清| 97久久中文字幕| 中文字幕在线视频久| 一区在线观看| 国产精品一区二区三区美女 | 91麻豆精品激情在线观看最新| 国产激情久久| 亚洲大全视频| 国产精品主播在线观看| 日本精品影院| 日韩激情中文字幕| 国产精品13p| 在线观看亚洲精品福利片| 精品久久中文| 99在线观看免费视频精品观看| 国产视频网站一区二区三区| 久久一级电影| 久久国产婷婷国产香蕉| 久久国产日韩| 国产精品亚洲一区二区在线观看| 欧美aa在线观看| 亚洲tv在线| 成人免费电影网址| 国产女人18毛片水真多18精品| 亚洲网站视频| 欧美国产极品| 日韩中文欧美在线| 亚洲一级少妇| 国产伦理一区| 久久亚洲风情| 国产h片在线观看| 日韩高清电影一区| 91九色精品国产一区二区| 麻豆视频观看网址久久| 另类av一区二区| 91综合视频| 日韩国产欧美三级| 欧美日韩国产免费观看视频| 久久精品二区亚洲w码| 亚洲伊人精品酒店| 神马日本精品| 国产精品porn| 亚洲色图国产| 免费av一区| 国产videos久久| 国产人成精品一区二区三| 先锋影音国产一区| 久久精品不卡| 国产精品久久久久久久久久10秀 | 综合亚洲视频| 亚洲二区视频| 福利一区二区| 国产精品宾馆| 日韩福利视频网| 免费在线成人网| 99久久婷婷这里只有精品| 老司机精品视频在线播放| 日本a口亚洲| 石原莉奈一区二区三区在线观看| 天堂中文在线播放| 精品一区二区三区视频在线播放| 在线免费观看亚洲| 合欧美一区二区三区| 日韩不卡视频在线观看| 久久这里只有精品一区二区| 91成人在线| 日本成人在线网站| 蜜桃久久久久久久| 日韩视频一区| 99国产精品久久久久久久成人热 | 久久久久久久久久久妇女 | 亚洲欧美日韩高清在线| 四虎4545www国产精品| 国产成人精品一区二区三区视频| 国产精品一区二区精品视频观看| 日韩三级精品| 亚洲精品精选| 亚洲区国产区| 日韩精品视频在线看| 日本在线成人| 亚洲人妖在线| 日韩免费精品| 日韩欧乱色一区二区三区在线| 亚洲区国产区| 婷婷成人av| 日韩一区中文| 国产日韩一区二区三免费高清| 欧美私人啪啪vps| 国产精品色在线网站| 麻豆一区二区在线| 97精品国产福利一区二区三区| 四虎国产精品免费观看| 日韩中文首页| 婷婷亚洲综合| 石原莉奈在线亚洲二区| 亚洲精品乱码| 国产精品一级| 日韩1区2区| 欧美日一区二区| 午夜国产欧美理论在线播放 | 日本黄色精品| 99久久亚洲精品| 国产美女精品| 日韩一二三区在线观看| 国产精品一卡| 韩国久久久久久| 午夜久久免费观看| 亚洲永久精品唐人导航网址| 欧美日韩18| 国产精品99一区二区三| 婷婷成人在线| 久久亚洲一区| 欧美日韩一区二区国产| 老牛国内精品亚洲成av人片| 亚洲永久av| 国产精品视区| 国产亚洲一区| 日韩免费小视频| 蜜桃久久av| 欧美国产亚洲精品| 欧美日韩中文一区二区| 蜜桃视频一区二区三区在线观看| 欧美伊人久久| 亚洲天堂资源| 男人的天堂久久精品| 欧美激情三区| 日韩天堂在线| 五月国产精品| 黄色精品视频| 亚洲欧美日韩精品一区二区 | 日韩精品电影| 午夜在线播放视频欧美| 国产精品午夜一区二区三区| 日本免费久久| 亚洲字幕久久| 亚洲黄色免费看| 日韩精品一级中文字幕精品视频免费观看| 欧美日韩一区二区三区不卡视频 | 欧美国产另类| 尤物网精品视频| 麻豆精品av| 亚洲在线免费| 国产精品任我爽爆在线播放 | 久久精品国产99国产| 日韩午夜一区| 久久不见久久见免费视频7| 亚洲午夜av| 国产乱码精品一区二区三区四区| 久久精品在线| 国产精品一国产精品k频道56| 午夜电影亚洲| 国产精品成久久久久| 天海翼亚洲一区二区三区| 日韩免费久久| 国产日韩中文在线中文字幕| 亚洲欧美伊人| 精品午夜av| 亚洲精品乱码日韩| 久久激情中文| 麻豆一区二区三| 在线精品亚洲|