zoukankan      html  css  js  c++  java
  • Django -- 多对多建表增删改查

    ManyToManyField -- 自动创建第三张对应关系表

    表结构

    class Author(models.Model):
        name = models.CharField(max_length=32)
        books = models.ManyToManyField('Book')   # 描述多对多关系,不生成字段,生成关系表

    查询

     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表中

    删除

    def author_del(request):
        pk = request.GET.get('pk')
        models.Author.objects.filter(pk=pk).delete()

    编辑

    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)
     
  • 相关阅读:
    html-Notes3
    html-Notes2 表单
    html 笔记
    网页设计常用色彩搭配表
    css
    html-Notes
    C# 输入字符串,每3个截取一次,形成一个数组
    提高情商的好书推荐 (程序猿不仅要智商也要情商)
    PHP 学习笔记---基本语法
    php学习笔记之字符串处理
  • 原文地址:https://www.cnblogs.com/Agoni-7/p/11426125.html
Copyright © 2011-2022 走看看