I\'m using DataTables. I want to let the user select multiple rows and delete them. So far I have it working so it deletes the first row in the selection using the code belo
You could try sometings like this:
$(function(){
$.post("{% url delete %}", {"ids[]": anSelected}, function(res){
if(res.ok){
// remove rows from your table, maybe :)
// oTable.fnDeleteRow(anSelected);
}else{
alert(res.errors);
}
});
})
On the server:
@ajax_request
def test(request):
ids = request.POST.getlist("ids[]")
try:
Items.objects.filter(id__in=ids).delete()
except:
return {"ok": False, "errors": "your error"}
return {"ok": True}
the @ajax_request decorators is from https://bitbucket.org/offline/django-annoying/wiki/Home and let you return json response.
You'd need to use simplejson.loads
, for example if you'd pass the anSelected array as arr
you'd use something like this
from django.utils import simplejson
array = simplejson.loads(request.POST['arr'])
try:
ModelName.objects.filter(pk__in=array).delete()
except:
return HttpResponse(simplejson.dumps({'ok': False}))
return HttpResponse(simplejson.dumps({'ok': True}))
and in your javascript this something along these lines:
$.post(
'/delete/',
{arr: anSelected},
function(data){
if(data.ok){
//Everything went smoothly
}else{
//Something failed, you can send extra info from django like the name of the exception thrown if you'd want and display it
}
}
);