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)
     
  • 相关阅读:
    core dump的使用
    wav文件格式
    Unicode编码 【转】
    WAV格式中常见的压缩编码
    两台交换机级联端口mac地址表维护(转载)
    pthread_cond_wait()的使用方法
    makefile自动依赖[转]
    11月的第一天
    再读simpledb 之 事务管理的实现(3)
    再读simpledb 之 元数据管理(1)
  • 原文地址:https://www.cnblogs.com/Agoni-7/p/11426125.html
Copyright © 2011-2022 走看看