美文网首页
django 插入外键值思路

django 插入外键值思路

作者: whong736 | 来源:发表于2019-01-23 06:11 被阅读13次

    1.先确定需要添加添加的带有外键的数据格式,涉及几个表
    2.前端组装好这个数据格式传回后端
    3.后端验证数据,从请求中分离出外键的值,进行获取对象
    4.使用add进行添加外键的值

    查询出多对多的对象

    r1=Role.objects.get(role_name=role) # r1表示UserInfo的多对多数据
    u1=UserInfo(user_name=name,user_pwd=password,sex=sex,mobileno=mobile,email=email)
    u1.save()
    u1.role.add(r1)
    u1.save()

    #插入数据
    def add(request):
     
        G_title=request.POST.get('title')#-------值为:python书本
     
        G_publish=request.POST.get('publish') #-------值为:1
        G_authors_list=request.POST.getlist('authors')#-------值为:[3,7]
     
     
     
        publish_obj=Publish.objects.get(id=G_publish)#查找Publish表对应id的obj   
        authors_obj_list=Author.objects.filter(id__in=G_authors_list)#查找Author表对应id的多个obj
     
        title       #-------普通字段
        publish     #-------一对多外键
        authors     #-------多对多外键
     
        book_obj=Book.objects.create(title=G_title,publish=publish_obj)#添加普通和一对多外键的值
        
     
        #添加多对多外键的值
        方式一
        book_obj.authors.add(*authors_obj_list)
        方式二
        for obj in authors_obj_list:
            book_obj.authors.add(obj)
     
        return redirect('/index/')
    
    
    
    

    django 插入多对多数据

    def edit(request,b_id):#b_id-----为书本的id
     
        G_title=request.POST.get('title')#-------值为:linux书本
     
        G_publish = request.POST.get('publish')#-------值为:2
        G_authors_list = request.POST.getlist('authors')#-------值为:[3,5]
     
     
        book_obj = Book.objects.get(id=b_id)#查找Book表要修改的id对象
     
        publish_obj = Publish.objects.get(id=G_publish)#查找Publish表对应id的obj
        author_objs = Author.objects.filter(id__in=G_authors_list)#查找Author表对应id的多个obj
     
     
        book_obj.title=G_title          #-------修改普通字段
        book_obj.publish=publish_obj    #-------修改一对多字段
        book_obj.authors=author_objs    #-------修改多对多字段 
        #注意:多对多字段 必须是.all()/.filter()等的查询集(QuerySet)
        book_obj.save()                 #-------一定得save(),才能对数据库进行修改
     
        return redirect('/index/')
    

    相关文章

      网友评论

          本文标题:django 插入外键值思路

          本文链接:https://www.haomeiwen.com/subject/nspndqtx.html