django获取数据库数据并设置select下拉框当前值。

2022-09-20 10:16:18

问题场景:

Django开发,有后台数据对象info,要select下拉框中设置从数据库中读出来的值info.credit为当前值。


解决分析

  • 方法:要设置下拉框的当前值,要通过js实现,将select的某个值设为选中,可以通过改对应的selected属性为selected,也可以用jquery框架直接将值为某个值的选项设为选中。

  • 取值:但是在js里面要的获取后台数据库的数据有三种途径:

在后台往模板中的js代码块部分填入后台数据。

js中的代码,{{后台填入的值}}或者写进val中不用赋值给变量,第二句是用jQuery框架直接获取元素的,设它的当前值var credit={{info_credit| safe}}$("#id_selector").val(credit);
#django中的代码defget_info(request):
	obj_info=ModuleInfo.objects.get(xxx_id=xxx_id)#查询数据库得到一个结果集变量return render(request,'模板.html',{'info':obj_info,‘info_credit’:json.dumps(obj_info.credit)})

在js函数里通过ajax请求获得json数据给js变量赋值

var credit=0
$.ajax({
            url:"/ajax_query_credit/",
            type:"POST",
            data:{"info_id":'0'},
            success:function(response){
                credit=response['credit']},
            dataType:'json',});
#后台defajax_query_credit(request):
	id_info=request.POST.get('id_info')
	obj_info=ModuleInfo.objects.get(id_info=id_info)#查询数据库得到一个结果集变量return HttpResponse(json.dumps({'credit':id_info.credit}))

从html文件中获取对应元素的值

由于后台传入的是一个对象info,非json数据,在html中是{{info.credit}}直接取的,在js中不行,要为json数据。
(由于不想在后台传的参数中额外加入一个json化的info.credit)所以,这里在js里搞了个小操作。
在js中获取html模板中的已经填好的值,再将html的{{info.credit}}给隐藏掉。
html:<p id="hide_credit"  hidden>{{info.credit}}</p>
js:$("#id_credit_selector").val($("#hide_language").text());

  • 注意:写入js中的要是json数据,所以写入js的数据后台要转化字典值为json。还有在views中写好了功能函数记得在urls.py绑定url请求哦,格式path('/xxx/',views.xxx),。我用的是最后一种,用哪种根据具体情况而定。
  • 作者:铝合金一号
  • 原文链接:https://blog.csdn.net/qq_41821874/article/details/102461384
    更新时间:2022-09-20 10:16:18