用ajax将model从前台传到后台,django实现将后台model对象转换成json对象并传递给前端jquery...

1、django的model转json对象。

1.1、单个modle转换,返回json对象:

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、前端接受并获取:

$.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:

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'

# 遍历查询集 调用model属性转换成dict

def queryset_to_json(queryset):

obj_arr=[]

for o in queryset:

obj_arr.append(o.toDict())

return obj_arr

# 获取角色分页列表

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就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值