2016-04-16 5 views
2

ich folgende in meinem views.py habeAktualisierung Feld in Django funktioniert nicht

if request.method=='POST': 
    form = ExtraForm(request.POST,instance=request.user) 
    print ("hi") 
    if form.is_valid(): 
     form.save() 
     print ("yes") 
    print ("newform is ") 
else: 
    form = ExtraForm(instance=request.user) 
    context['form']=form 
return render(request, "updateProfile.html",context) 

Nun, was passiert ist, dass ich keine Fehler bekommen und es tut alles völlig in Ordnung, aber es hat nichts Aktualisierung am Ende! ! Was für mich keinen Sinn ergibt. Irgendeine Idee was ist los?

Extraform:

class ExtraForm(forms.ModelForm): 
    research_place = forms.CharField(max_length=256, label="", required=True, widget=forms.TextInput(attrs={'class': 'form-control','placeholder': 'First Name','required':True})) 
    studies = forms.CharField(max_length=256, label="", required=True, widget=forms.TextInput(attrs={'class': 'form-control','placeholder': 'Last Name','required':True})) 

    class Meta: 
     model = RegisterUser 
     fields = ['research_place','studies'] 
     widgets = { 
      # 'image': ImageCropWidget, 
     } 

Modelle:

class RegisterUser(models.Model): 
    user=models.OneToOneField(User,on_delete=models.CASCADE) 

    biography = models.CharField(max_length=1000000,blank=True) 
    research_place = models.CharField(max_length=1000000,blank=True) 
    studies = models.CharField(max_length=1000000,blank=True) 

    image = models.ImageField(blank=True,null=True,upload_to='uploaded_images',default ="uploaded_images/defaultReal.jpg") 
    # cropping = ImageRatioField('image','200x200',size_warning=True) #width x height 

    avatar_thumbnail = ImageSpecField(source='image', 
            processors=[ResizeToFill(200, 200)], 
            format='JPEG', 
            options={'quality': 60}) 

    activation_key = models.CharField(max_length=50) 
    key_expires = models.DateTimeField() 
    class Meta: 
     permissions = (
      ("has_uploaded", ("Has uploaded")), 
      ("is_authenticated", ("Is authenticated")), 
     ) 
+0

Was Sie zurück, wenn Formular gültig ist? Was ist der Wert von "Kontext" in diesem Fall? – ozgur

+0

@ozgur Ich habe nichts im Zusammenhang, aber wenn ich die Datenbank überprüfen, ist die Änderung nicht durch – swedishfished

Antwort

2

Es sieht aus wie die Form überhaupt nicht gültig ist. Fügen Sie eine Klausel else und prüfen errors:

if request.method == "POST": 
    form = ExtraForm(request.POST, instance=request.user) 
    if form.is_valid(): 
     form.save() 
     # You should perform some redirection here btw. 
     return redirect("/success/") 
    else: 
     print "Errors:", form.errors 
     context["form"] = form 
else: 
    form = ExtraForm(instance=request.user) 
    context["form"] = form 
return render(request, "updateProfile.html", context) 

Nach Update:

Sie sind die falschen Benutzer vorbei zu bilden. request.user ist User Typ, während Sie versuchen, RegisteredUser aktualisieren. Sie sollten die Zeile aktualisieren:

form = ExtraForm(request.POST, instance=request.user) 

zu

form = ExtraForm(request.POST, instance=RegisteredUser.objects.get(user=request.user)) 

Gleichfalls else Teil gilt auch:

form = ExtraForm(instance=RegisteredUser.objects.get(user=request.user)) 
+0

gegangen Nein, es gibt keine Fehler, es funktioniert gut. Es print ("Erfolg") funktioniert nach form.save() – swedishfished

+0

1. Haben Sie 'save' Methode des Formulars überschrieben? 2. Hast du zufällig mit 'commit = False' auf Save geklickt? 3. Haben Sie den obigen Code versucht? 4. Können Sie uns auch 'ExtraForm' Klasse zeigen? 5. Ist dies der gesamte Code in der View-Funktion oder nur ein Teil davon? – ozgur

+0

ok ich füge es jetzt dem Hauptpost hinzu – swedishfished