Django 多对多字段的更新和插入数据

表的普通字段   一对多字段    多对多字段    插入数据

 

#插入数据
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/')

 

 

 

 

 

表的普通字段   一对多字段    多对多字段    修改数据

 

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/')

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值