Django -- 多對多建表增刪改查

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)
相關文章
相關標籤/搜索