django 多對多表的創(chuàng)建和插入代碼實現(xiàn)
更新時間:2019年09月09日 10:16:23 作者:信奉上帝的小和尚
這篇文章主要介紹了django-多對多表的創(chuàng)建和插入代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
這篇文章主要介紹了django-多對多表的創(chuàng)建和插入代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
表的創(chuàng)建
# 作者和書籍之間的多對多關系 class Author(models.Model): ''' 作者表 ''' nid = models.AutoField(primary_key=True) name = models.CharField(verbose_name='作者名稱',max_length=32) # 第一種方式直接在作者表中創(chuàng)建ManyToManyField字段(ORM會自動幫我們創(chuàng)建第三張表推薦這種方式) author2books = models.ManyToManyField(to='Books') class Books(models.Model): ''' 書籍名稱 ''' nid = models.AutoField(primary_key=True) title = models.CharField(verbose_name='書本名稱',max_length=32) pid = models.ForeignKey(verbose_name='出版社ID',to='Press',to_field='nid',on_delete=models.CASCADE) # 第二鐘方式手動創(chuàng)建第三張表 # class Books2Author(models.Model): # ''' # 書本作者對應表 # ''' # nid = models.AutoField(primary_key=True) # aid = models.ForeignKey(verbose_name='作者ID',to='Author',to_field='nid') # bid = models.ForeignKey(verbose_name='書籍ID',to='Books',to_field='nid')
數(shù)據(jù)的添加
# 編輯作者 def edit_author(request): # 獲取作者ID id = request.GET.get('id') # 獲取所有書籍 books_lst = models.Books.objects.all() # 根據(jù)作者ID 獲取到作者對象 author_info = models.Author.objects.filter(pk=id).first() if request.method == 'POST': # 獲取前端傳過來的作者新名稱 name = request.POST.get('name') # 獲取前端傳遞過來的書籍 book_lst = request.POST.getlist('books') # 根據(jù)新名稱,更新當前名稱 author_info.name = name # 保存數(shù)據(jù) author_info.save() # set方法會將當前作者原先的書籍全部刪除,然后插入前端傳遞過來的書籍列表(參數(shù)為list類型) author_info.author2books.set(book_lst) # add方法會將前端傳遞過來書籍添加到 作者和書籍的對應表中。如果插入重復記錄會報錯(參數(shù)為單個元素,可以插入多個) # author_info.author2books.add(*book_lst) return redirect('/author_lst/') return render(request,'edit_author.html',{'books_lst':books_lst,'author_info':author_info})
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程
這篇文章主要介紹了Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程,需要的朋友可以參考下2021-02-02關于Django ForeignKey 反向查詢中filter和_set的效率對比詳解
今天小編就為大家分享一篇關于Django ForeignKey 反向查詢中filter和_set的效率對比詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python使用matplotlib繪制圖形大全(曲線圖、條形圖、餅圖等)
matplotlib 是一個用于創(chuàng)建靜態(tài)、動態(tài)和交互式可視化圖形的 Python 庫,它被廣泛用于數(shù)據(jù)可視化,并且可以與多種操作系統(tǒng)和圖形后端一起工作,本文給大家介紹了Python使用matplotlib繪制圖形大全,需要的朋友可以參考下2024-06-06Python django實現(xiàn)簡單的郵件系統(tǒng)發(fā)送郵件功能
這篇文章主要介紹了Python django實現(xiàn)簡單的郵件系統(tǒng)發(fā)送郵件功能,結(jié)合實例形式分析了django發(fā)送郵件的實現(xiàn)技巧與相關注意事項,需要的朋友可以參考下2017-07-07Python報錯KeyError: ‘missing_key‘的有效解決方法
在 Python 編程中,報錯信息常常讓開發(fā)者感到困擾,其中,“KeyError: ‘missing_key’”是一個較為常見的報錯,它可能在各種數(shù)據(jù)處理和字典操作的場景中出現(xiàn),本文將深入探討這個報錯的原因,并提供多種有效的解決方法,幫助開發(fā)者快速解決此類問題2024-10-10