1. 程式人生 > >django 多對多表操作

django 多對多表操作

正向新增

b1=Book.objects.get(id=1)
a1=Author.objects.get(id=2)
b1.authors.add(a1)   #可以直接新增obj
b1.authors.add(3)    #可以直接新增id

au_list=Author.objects.all()
b1.authors.add(*au_list) #可以直接新增obj列表
b1.authors.add(*[1,2,3]) #可以直接新增id列表

反向新增

a2=Author.objects.get(id=1)
b2=Book.objects.get(id=2)
a2.book_set.add(b2)
a2.book_set.add(
3) a2.book_set.add(*Book.objects.all()) a2.book_set.add(*[1,2,3,4])

正向刪除

# 刪除id=1的書籍的所有作者
b1=Book.objects.get(id=1)
b1.authors.clear()   

# 刪除id=2的書籍的作者id=1,2,5
b2=Book.objects.get(id=2)
b2.authors.remove(1)
b2.authors.remove(*[2,5]) 

反向刪除

# 刪除作者id=1的所有書籍
a1=Author.objects.get(id=1)
a1.book_set.clear()