2016-05-20 10 views
1

Ich habe überhaupt das folgende Modellkann nicht aktualisiert Django 1.9 BooleanField

class UserProfile(models.Model): 

    user = models.OneToOneField(User, related_name='profile') 
    force_password_change = models.BooleanField(default=False) 

Aus irgendeinem Grund, den ich nicht in der Lage bin, um die BooleanField zu ändern. Ich möchte das in einer Ansicht ohne Modellform machen. Hier ist die Ausgabe, die ich von der Django-Befehlszeile bekomme

>>> new_user = User.objects.get(username="bob") 
>>> new_user 
<User: bob> 
>>> type(new_user) 
<class 'django.contrib.auth.models.User'> 
>>> new_user.profile 
<UserProfile: bob> 
>>> type(new_user.profile) 
<class 'accounts.models.UserProfile'> 
>>> new_user.profile.force_password_change 
False 
>>> new_user.profile.force_password_change = True 
>>> new_user.save() 
>>> new_user.profile.force_password_change 
False 
>>> 

Also was fehlt mir hier? Ich bin sicher, es ist etwas Dummes, aber jede Hilfe wäre großartig.

UPDATE:

gleiches Problem, wenn das Profil Feld aktualisieren.

>>> new_user.profile.force_password_change 
False 
>>> new_user.profile.force_password_change = True 
>>> new_user.profile.save() 
>>> new_user.profile.force_password_change 
False 
>>> 

UPDATE 2:

versucht, dies auch:

>>> 
>>> new_user.profile.force_password_change = True 
>>> new_user.profile.save() 
>>> new_user = User.objects.get(pk=new_user.pk) 
>>> new_user.profile.force_password_change 
False 
>>> 

ich das letzte Bit von nützlichen Informationen denke, ich bieten kann, ist, dass ich voll und ganz das force_password_change Feld durch den Admin-Panel ändern. Es ist so, als würde die Sicherungsaktion nicht ausgeführt, wenn ich user.profile.save() ausprobiere. Aber ich bekomme keine Fehler, die mir auffallen.

+0

Sie müssen speichern 'new_user.profile' ... – thebjorn

+0

Nein. Funktioniert nicht. >>> new_user.profile.force_password_change Falsch >>> new_user.profile.force_password_change = True >>> new_user.profile.save() >>> new_user.profile.force_password_change Falsch >>> – RG5

+0

Update Ihr Frage, setze Code nicht in Kommentare. – thebjorn

Antwort

1

Haben Sie versucht, das UserProfile-Objekt direkt zu speichern?

p = UserProfile.objects.get(user=new_user) 
p.force_change_password = True 
p.save() 

print new_user.profile.force_change_password 

Bitte entschuldigen Sie meine Kürze hier ... Ich tippe dies auf einem Telefon.

+0

Vielen Dank! Das funktioniert. Irgendeine Idee, warum es anders nicht funktioniert hat? – RG5

+0

Ich denke, meine erste Zeile mit 'p = new_user.profile 'ersetzen sollte auch funktionieren (aber ich kann dies nicht auf Handy überprüfen). –

+0

Ich denke, dass dieser Abschnitt der Dokumentation, insbesondere die letzten 2 Absätze, hilfreich sein kann - * Erweitern des bestehenden Benutzermodells * -https: //docs.djangoproject.com/en/1.8/topics/auth/customizing/#extending- das existierende Benutzermodell. –

Verwandte Themen