2016-08-09 43 views
0

Also habe ich einen AJAX-Befehl, der Informationen an eine Methode von views.py übergibt (ich habe verifiziert, dass die Übergabe von HTML-> urls.py-> views.py funktioniert, das ist alles gut), aber sobald ich es in "views.py" habe, habe ich keine Ahnung, wie man es in der Datenbank selbst aktualisieren.Datenbank mit AJAX in Django aktualisieren

Ich habe versucht zu vermeiden, eine forms.py-Datei zu verwenden, wenn möglich, aber wenn das die einzige Option ist, werde ich mich daran beugen.

Die AJAX-Funktion ist wie folgt:

$.ajax({ 
    url : '/perform/acts/update/{{ act.id }}/', 
    type : "POST", 
    data : { 
     'csrfmiddlewaretoken' : "{{ csrf_token }}", 
     furtherData : furtherData 
    }, 
    success : function(result) {} 
}); 

Die views.py Funktion ist ... bisher fehlt, um es gelinde zu sagen, aber das ist, wo ich bin irgendwie verloren:

def update_act(request, furtherData_id): 
    if request.method == 'POST': 
     ? 
     return HttpResponse(?) 

Ein großer Grund dafür war, Updates ohne Neuladen durchzuführen und ohne ein weiteres Modul hinzufügen zu müssen. Ich benutze Django nur für ein paar Wochen, also könnte es etwas einfaches sein, dass ich vermisse ...

Jede Hilfe sehr geschätzt!

Antwort

1

Ihre View-Funktion:

def my_view_action(request, any_pk_id): 
    from django.http import JsonResponse 
    if request.method=='POST' and request.is_ajax(): 
     try: 
      obj = MyModel.objects.get(pk=any_pk_id) 
      obj.data_attr = request.POST['attr_name'] 
      obj.save() 
      return JsonResponse({'status':'Success', 'msg': 'save successfully'}) 
     except MyModel.DoesNotExist: 
      return JsonResponse({'status':'Fail', 'msg': 'Object does not exist'}) 
    else: 
     return JsonResponse({'status':'Fail', 'msg':'Not a valid request'} 


Diese Funktion direkt Daten auf Ihrer DB speichern, denn es ist die erste Gebrauch validieren Formular dann geht Aktion zu speichern.

--- --- Schritte
- ein Formular für das Modell erstellen.
- Füllen Sie die Daten zu diesem Modell über Anfrage/Objekt.
- Ausführen validieren auf Formular dann speichern in DB über Formular oder über Modell.

Für weitere Informationen https://docs.djangoproject.com/en/1.10/topics/forms/modelforms/#the-save-method

4
def update_act(request,furtherData_id): 
    from django.http import JsonResponse 
    if request.method == 'POST': 
     obj=MyObj.objects.get(pk=furtherData_id) 
     obj.data=request.POST['furtherData'] 
     obj.save() 
     return JsonResponse({'result':'ok'}) 
    else: 
     return JsonResponse({'result':'nok'} 
+0

ich so das Gefühl, ist die „richtige Antwort“ auf der Grundlage des Parameter die OP zur Verfügung gestellt, aber diese blind die Eingabe in die DB nicht speichern. Die Verwendung einer ModelForm und die Bereitstellung von 'obj' als Instanz für dieses Formular würde hier eine Datenvalidierung ermöglichen. – souldeux

Verwandte Themen