1、django的model转json对象。
1.1、单个modle转换,返回json对象:
1 2 3 | sqlOrder = get_object_or_404(SqlOrder,id = request.GET.get( "id" )) objJson = serialize( 'json' ,[sqlOrder])[ 1 : - 1 ] { "model" : "sqlapply.sqlorder" , "pk" : 2 , "fields" : { "work_id" : "{now}{_ran}" , "username" : "admin" , "status" : 3 , "type" : 0 , "backup" : 0 }} |
注意:objJson["fields"]["username"] 才能获得想要属性值。objJson["pk"]获得主键值。
1.2、querySet转换:
json_data = serializers.serialize("json", MyModel.objects.all())
2、转换后的json对象作为子元素传递到前端:
2.1、将json对象转换成字符串。(单引号包含属性)。
objStr = json.loads(objJson)
2.2、组拼json对象。
response_data = {'statcode': '1', 'data':objStr}
2.3、返回前进行对象转换:
return HttpResponse(json.dumps(response_data))
2.4、前端接受并获取:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $.ajax({ url: "{% url 'sqlapply:auditSqlOrder' %}" , type: "GET" , data:{ "id" :id, "args" : "getObjById" }, success:function(result){ res = jQuery.parseJSON(result); #关键代码!!!!解析一个 JSON 字符串'{"name":"John"}'为Json对象。 if (res[ "statcode" ] = = "1" ) { objStr = res[ "data" ]; console.log(objStr[ "fields" ][ "username" ]); #获取方式1 alert(objStr.fields.username); #获取方式2 } }, error:function(){ alert( "访问异常,请截图联系管理员 \t\n ErrorNO:auditSqlOrder.getObjById" ) } }); |
补充知识:django 将model转换成想要的json格式
model:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class SysRole(models.Model): id = models.CharField(db_column = 'ID' , primary_key = True , max_length = 50 ) # Field name made lowercase. rolename = models.CharField(db_column = 'RoleName' , max_length = 50 ) # Field name made lowercase. description = models.CharField(db_column = 'Description' , max_length = 200 , blank = True , null = True ) # Field name made lowercase. querycode = models.CharField(db_column = 'QueryCode' , max_length = 200 , blank = True , null = True ) # Field name made lowercase. isdisabled = models.CharField(db_column = 'IsDisabled' ) # Field name made lowercase. This field type is a guess. def __unicode__( self ): return self .rolename # 将属性和属性值转换成dict 列表生成式 def toDict( self ): return dict([(attr, getattr( self , attr)) for attr in [f.name for f in self ._meta.fields]]) #type(self._meta.fields).__name__ class Meta: managed = False db_table = 'sys_role' |
1 2 3 4 5 6 | # 遍历查询集 调用model属性转换成dict def queryset_to_json(queryset): obj_arr = [] for o in queryset: obj_arr.append(o.toDict()) return obj_arr |
1 2 3 4 5 6 7 8 9 | # 获取角色分页列表 def get_roles_page( self ,_page,_limit): _roles = SysRole.objects.all()[(int(_page) - 1 ) * int(_limit):int(_page) * int(_limit)] _count = SysRole.objects.all().count() _dict_roles = tools.queryset_to_json(_roles) _data_page_json = {} _data_page_json[ 'Rows' ] = _dict_roles _data_page_json[ 'Total' ] = _count return json.dumps(_data_page_json,ensure_ascii = False ) |
在model上加入toDict方法 然后执行查询 得到queryset 遍历它 将queryset里的每个model执行他的todict方法 转换成字典格式 之后统一调用json.dumps方法转json
以上这篇django实现将后台model对象转换成json对象并传递给前端jquery就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持自学编程网。
- 本文固定链接: https://zxbcw.cn/post/182787/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)