2016-06-09 10 views
1

Ich versuche, ein UserProfile-Modell in Django zu machen. Die Hälfte der Informationen für die Felder in diesem Modell kommt direkt von der Eingabe des Benutzers in einem Formular, die andere Hälfte importiere ich von einem sozialen Netzwerk, das sie sich authentifizieren, wenn sie sich einloggen. Wie würde ich das umsetzen?Wie speichere ich manuell in Djangos Datenbank?

if form.is_valid(): 
    prefs = form.save(commit=False) 
    prefs.user = request.user 
    prefs.save() 
    # if they logged in through social network there are other fields 
    if socialacc: 
     firstname = socialacc[0].extra_data['firstName'] 

So jetzt habe ich die Daten für 'Vorname' als Zeichenfolge. Wie soll ich das im selben Modell speichern? Das Modell enthält ein Feld namens Vorname, das leer ist, sofern keine Informationen zur sozialen Authentifizierung verfügbar sind.

Vielen Dank für jede Hilfe!

Antwort

2

Da die save Methode eine Model object zurückgibt, können Sie es wieder ändern, bevor endgültig in die Datenbank speichern:

if form.is_valid(): 
    prefs = form.save(commit=False) 
    prefs.user = request.user 
    # if they logged in through social network there are other fields 
    if socialacc: 
     prefs.firstname = socialacc[0].extra_data['firstName'] 
     ... 
    prefs.save() 
+0

Dank Maxime! Entschuldigen Sie die Verzögerung der Antwort! – aaravam