我正在使用DataTables。我想让用户选择多个行并将其删除。到目前为止,我可以使用它,因此它使用下面的代码删除选择的第一行。
Ajax代码:
/* Add a click handler for the delete row */ $('#delete').click( function() { /* fnGetSelected returns an array of integers - each int is a db unique id */ var anSelected = fnGetSelected( oTable ); delete_url = '/delete/' + anSelected[0]; $.ajax({ url: delete_url, type: 'GET', }); oTable.fnDeleteRow( anSelected[0] ); fnReloadAjax(); } );
Django代码:
@login_required def delete(request, row_id): item = get_object_or_404(Items, pk=row_id, user=request.user) item.delete()
我如何更新它以将所有行ID传递给Django后端?我想我需要发布anSelected数组,但不确定如何执行此操作。处理该整数数组需要什么Django代码?
您需要使用simplejson.loads,例如,如果要传递anSelected数组,因为arr您将使用类似这样的东西
simplejson.loads
arr
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}))
并在您的javascript中按照以下方式进行操作:
$.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 } } );