django 多對多表的創(chuàng)建和插入代碼實現(xiàn)
更新時間:2019年09月09日 10:16:23 作者:信奉上帝的小和尚
這篇文章主要介紹了django-多對多表的創(chuàng)建和插入代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
這篇文章主要介紹了django-多對多表的創(chuàng)建和插入代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
表的創(chuàng)建
# 作者和書籍之間的多對多關(guān)系 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): # ''' # 書本作者對應(yīng)表 # ''' # 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方法會將前端傳遞過來書籍添加到 作者和書籍的對應(yīng)表中。如果插入重復(fù)記錄會報錯(參數(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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)RabbitMQ的消息隊列的示例代碼
這篇文章主要介紹了python實現(xiàn)RabbitMQ的消息隊列的示例代碼,總結(jié)了RabbitMQ中三種exchange模式的實現(xiàn),分別是fanout, direct和topic。感興趣的小伙伴們可以參考一下2018-11-11python 限制函數(shù)調(diào)用次數(shù)的實例講解
下面小編就為大家分享一篇python 限制函數(shù)調(diào)用次數(shù)的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04Tensorflow訓(xùn)練MNIST手寫數(shù)字識別模型
這篇文章主要為大家詳細介紹了Tensorflow訓(xùn)練MNIST手寫數(shù)字識別模型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02創(chuàng)建pycharm的自定義python模板方法
今天小編就為大家分享一篇創(chuàng)建pycharm的自定義python模板方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05