Serializing Objects and Passing Multiple JSON Data in Django
Below is just an example, just replace the necessary Models and Queries:
PS: Add `from collections import OrderedDict`,and from django.core.serializers.json import DjangoJSONEncoder in your views.py
def pins_info(request): if request.method == "GET": getpin = request.GET.get('pin', None) keyvals = OrderedDict([ ('taxdec', 'landproperty__ctaxdec'), ('brgy', 'ssectionid__sbrgyid__cbrgyname'), ('landarea', 'narea') ]) keyvals1 = OrderedDict([ ('mydescription', 'description') ]) m = ButuanMaps.objects.filter(clandpin=getpin).values_list(*keyvals.values()) reference = ButuanMaps.objects.get(clandpin=getpin).geom within = SoilType.objects.filter(geom__contains=reference).values_list(*keyvals1.values()) within1 = ErosionMap.objects.filter(geom__contains=reference).values_list(*keyvals1.values()) result = dict(zip(keyvals, zip(*m))) result1 = dict(zip(keyvals1, zip(*within))) result2 = dict(zip(keyvals1, zip(*within1))) data = json.dumps([result, result1, result2], cls=DjangoJSONEncoder) return HttpResponse(data, content_type='application/json')and in your template:
success: function(data) { taxdec = data[0]['taxdec']; brgy = data[0]['brgy']; landarea = data[0]['landarea']; soiltype = data[1]['mydescription']; erosion = data[2]['mydescription']; var inputform = $('#forminput').val(); $('#infotable').append( "<tr><td class=\"bold\">Tax Declaration </td><td>" + taxdec + "</td></tr>" + "<tr><td class=\"bold\">Barangay</td><td>" + brgy + "</td></tr>" + "<tr><td class=\"bold\">Area of Land</td><td>" + landarea + " m²</td></tr>" + "<tr><td class=\"bold\">Soil Type</td><td>" + soiltype + "</td></tr>" + "<tr><td class=\"bold\">Erosion Type</td><td>" + erosion + "</td></tr>"); }In order to identify the index of the data, just look up the console:
PS: Add `from collections import OrderedDict`,and from django.core.serializers.json import DjangoJSONEncoder in your views.py
Comments
Post a Comment
Feel free to ask, suggest and comment regarding this post/blog. You can also contact me through e-mail, just always use the contact page. Thank you for visiting this blog.