2016-05-01 13 views
0

Wie kann ich bearbeitete Informationen in meinem Django speichern? Ich möchte Benutzerprofil bearbeiten und möchte sie in meiner Datenbank speichern. für das ich diese MethodeSo speichern Sie das Bearbeitungsprofil in Django

@login_required() 
def saveProfile(request): 
    if request.method =='POST': 
     print "heloo" 
     usr=request.POST['username'] 
     first_name=request.POST['first_name'] 
     last_name=request.POST['last_name'] 
     email=request.POST['email'] 
     mobile=request.POST.get('mobile_no') 
     exp=request.POST.get('experience') 
     skills=request.POST.get('Skills') 
     edu=request.POST.get('education') 
     linkedin=request.POST.get('linkedin_id') 
     print first_name 
     updated_values={'first_name': first_name} 
     Consultants.objects.filter(user__username=usr).update(skills=skills, user__first_name=first_name) 

    return HttpResponse("your account is updated succesfully") 

jetzt gemacht hatte, wenn ich den obigen Code auszuführen, ist es die Fähigkeiten Informationen speichert wirft aber eine Fehlermeldung Consultants has no field named 'user__first_name ' Wie kann ich Feld OneToOne Modell

Antwort

0

Sie zugreifen können, nicht aktualisieren zwei db-Tabellen in einer update-Anweisung. Sie müssen die Consultants (Name es Consultant pls) aktualisieren und User Modelle separat:

cons = Consultants.objects.filter(user__username=usr) 
# update profile model 
cons.update(skills=skills) 
# update user model 
User.objects 
    .filter(id__in=cons.values_list('user_id', flat=True)) 
    .update(first_name=first_name) 

Darüber hinaus empfehle ich Ihnen ein django model form für Consultant zu verwenden, fügen Sie die Felder für die User und überschreiben die save Methode, um um die zugehörige User Instanz zu speichern.

+0

vielen Dank. Es funktioniert jetzt. – vikrant

Verwandte Themen