ManyToManyField -- 自動建立第三張對應關係表app
表結構spa
class Author(models.Model): name = models.CharField(max_length=32) books = models.ManyToManyField('Book') # 描述多對多關係,不生成字段,生成關係表
查詢code
def author_list(request): all_author = models.Author.objects.all() for author in all_author: print(author) # Author object print(author.pk) # 1 -- 數據對象ID print(author.name) # 小白 -- 數據對象name print(author.books) # app01.Book.None 關係管理對象 print(author.books.all()) # 所關聯的全部對象 QuerySet列表
增長對象
def author_add(request): if request.method == 'POST': name = request.POST.get('name') books = request.POST.getlist('books') # getlist 獲取多個元素 author_obj = models.Author.objects.create(name=name) # 建立新做者 author_obj.books.set(books) # 給做者和書籍綁定關係[id,id],寫在author_book表中
刪除blog
def author_del(request): pk = request.GET.get('pk') models.Author.objects.filter(pk=pk).delete()
編輯get
def author_edit(request): pk = request.GET.get('pk') obj = models.Author.objects.filter(pk=pk).first() if request.method == 'POST': name = request.POST.get('name') books = request.POST.getlist('books') obj.name = name obj.save() obj.books.set(books)