django ForeignKey ManyToMany前後端連動
3402 ワード
まとめ外部キーは、基本的には通常のフィールドと同じ です.多対多 getlist() を取得 clear()add()remove() を更新
フロントエンドとバックエンドは文字列によってコミュニケーションされているのでajaxを使用する場合はデータ型であればJSON変換 を覚えておいてください
ForeignKey
バックエンド処理
かたわく
form方式コミット
ajax方式コミット
ManyToMany
バックエンド処理
かたわく
form方式コミット
ajax方式コミット
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/"
}
})
}