Django 鍊錶查詢 多對多建表

2021-08-22 08:48:37 字數 1359 閱讀 7266

背景

有兩張表 1. 作者 2.書籍

關係:乙個作者可以寫多本書、一本書也可以多個作者

思路:類似於給作者表做乙個外鍊錶 inner join

'''作者表'''

class

author

(models.model):

id = models.autofield(primary_key=true)

name = models.charfield(max_length=16,null=false,unique=true) # 不為空, 唯一

# 作者關聯書籍表

book = models.manytomanyfield(to='book')

'''查詢某個作者寫了哪些書的時候

通過作者.book.all()可以展示出該作者所有的書籍【物件】!

再通過書籍物件.name 列印書籍名

'''

html

}}

新增的時候如何解決,外鏈的內容(新增作者,寫了n本書)

html 新增乙個作者,寫的多本書

多選下拉框提交,選擇幾本書一起提交

multiple 為可以複選的下拉表

multiple

name="books"

id="books" >

value="

}">

}option>

select>

views中,重點

def

add_author

(request):

new_name = request.post.get('name')

# 獲取作者多本書籍

'''【多選框checkbox和多選的select!!!用 getlist 返回【列表】】'''

books = request.post.getlist('books')

#建立作者

new_obj = models.author.objects.create(name=new_name) # 獲取到物件

# 把新作者和書籍建立關係 book 是作者物件裡邊的,多表連線

'''【用set方法把多本書籍列表匯入django自動完成加表工作】'''

new_obj.book.set(books)

django 表關係之 多對多

比如一篇文章和標籤的關係。一篇文章可以有多個標籤,乙個標籤可以被多篇文章所引用。因此標籤和文章的關係就是典型的多對多的關係。下邊只是一篇文章對應多個標籤 乙個標籤對應多篇文章就不舉例了,自己腦補下!這樣我們會通過articles欄位來獲取某個標籤tags下邊的所有文章 articles models...

資料表多對多

今天學習了資料表多對多,由於有圖理解起來也輕鬆了很多,使用聯合主鍵進行多對多表的關係的管理 中間表 create database auth character set utf8 使用者表 create table users id varchar 32 primary key,name varch...

Hibernate多對多關係對映 建表

下邊講述hibernate多對多關係對映。多對多關係的表的結構為 兩個實體表,還包含乙個關係表,關係表為復合主鍵,如果要使用hibernate多對多關係對映,則關係表必須只包含兩個字段,如果生成了hibernate多對多關係對映,則中間關係表不會生成實體 即沒有對應的pojo類,更沒有其對映檔案 1...