django ForeignKey ManyToMany前後端連動

3402 ワード

まとめ
  • 外部キーは、基本的には通常のフィールドと同じ
  • です.
  • 多対多
  • getlist()
  • を取得
  • clear()add()remove()
  • を更新
  • フロントエンドとバックエンドは文字列によってコミュニケーションされているのでajaxを使用する場合はデータ型であればJSON変換
  • を覚えておいてください
    ForeignKey
    バックエンド処理
    user_types = models.UserType.objects.all()  #  template    
    data_to_tpl["user_types"] = user_types
    
    
    
    user_id = request.POST.get("id", None)
    # print(type(request.POST.values()), request.POST.values())
    
    to_update_dict = {}
    to_update_dict["password"] = request.POST.get("password")
    to_update_dict["phone"] = request.POST.get("phone")
    to_update_dict["email"] = request.POST.get("email")
    to_update_dict["user_type_id"] = request.POST.get("user_type_id")
    front_hobbys = list(request.POST.getlist("hobbys"))  #   select widget      ,    get(),            
    print("---front_hobbys:", front_hobbys)
    print("---to_update_dict", to_update_dict)
    
    # update
    models.UserInfo.objects.filter(pk=user_id).update(**to_update_dict)
    user_obj = models.UserInfo.objects.get(pk=user_id)
    user_obj.hobby.clear()  #    ,    ,   
    user_obj.hobby.add(*front_hobbys)  #    ,    ,   
    user_obj.save()  # save to databases

    かたわく
    form方式コミット
    
        
            

    ajax方式コミット

    ManyToMany
    バックエンド処理
    data_to_tpl["my_hobbys"] = user_obj.hobby.all()  #   ,        all      queryset     
    
    all_hobbys = models.Hobby.objects.all()  #  template    
    data_to_tpl["all_hobbys"] = all_hobbys
    
    #       
    front_hobbys = list(request.POST.getlist("hobbys"))  #   ,     getlist()
    user_obj = models.UserInfo.objects.get(pk=user_id)
    user_obj.hobby.clear()
    user_obj.hobby.add(*front_hobbys)

    かたわく
    form方式コミット
     
          
        
            
              
        
    

    ajax方式コミット
    function uploadModifiedHobby(ths) {
            var hobbys = $("#hobby_select").val();
            hobbys_str = JSON.stringify(hobbys)  //           
            console.log(hobbys_str)
            $.ajax({
                type:"POST",
                url:"/chouti_like/delete_this_hobby/",
                data:{"hobbys":hobbys_str,},
                success:function (data) {
                    location.href = "/chouti_like/show_my_info/"
                }
            })
        }