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)
     
  • 相关阅读:
    opencv图片压缩视频并读取
    python常见模块统计
    MySQL索引及优化
    web开发框架之 Tornado
    Tornado项目基本架构
    python闭包以及装饰器
    python语法糖
    python os模块
    TCP中的3次握手和4次挥手
    Python常见的数据类型方法
  • 原文地址:https://www.cnblogs.com/Agoni-7/p/11426125.html
Copyright © 2011-2022 走看看