2016-09-08 2 views
0

Ich habe Python soziale Authentifizierung konfiguriert, um einen Benutzer mit Steam Open ID zu erstellen. Und ich habe ein separates Modell, Player, das in einer Eins-zu-eins-Beziehung mit einem Benutzer steht, der zusätzliche Felder speichert, von denen eines die Steamid des Benutzers ist.Python soziale Auth kann kein Modell erstellen, das sich auf Benutzer bezieht

Ich habe die Pipeline um eine Funktion erweitert, die einen Player erstellt und die Steamid in einem ihrer Felder speichert.

Alles funktioniert gut, wenn es ein Benutzer ist, der nicht bereits in der Datenbank gespeichert ist. Mit anderen Worten, die Anwendung erstellt den Benutzer und speichert das Feld das erste Mal, wenn ich mich anmelde, aber beim zweiten Mal logge ich den Fehler ein:

Kann nicht zuweisen "{Wörterbuch}": "User.player" muss eine "Player" -Instanz sein. Wo Wörterbuch ist die Menge der Felder.

Hier ist meine Funktion:

def save_profile(backend, user, response, *args, **kwargs): 
import pdb; pdb.set_trace() 
if backend.name == 'steam': 
    player = Player(user = user, 
     ingamename = kwargs['uid'], 
     avatar = kwargs['details']['player']['steamid']) 
    player.save() 
+0

Ich sollte beachten, dass das Hinzufügen dieses Haltepunkts in meinem Code das Programm nicht einmal das zweite Mal aufrufen. Nur bei der ersten Anmeldung erreiche ich den Breakpoint. Beim zweiten Mal wird der Fehler ausgegeben, ohne den Haltepunkt zu erreichen – dosedoe

Antwort

0

My Own Problem gelöst: Das Problem war, dass mein Modell das gleiche wie einer der Schlüssel in den Keyword-Argumente war, so versucht es wurde falsch die 'zu speichern Spieler 'Wörterbuch in mein Modellfeld. Das Ändern des "Players" in "Profil" löste das Problem.

Verwandte Themen