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.