2016-06-09 6 views
1

Я пытаюсь создать модель UserProfile в Django. Половина информации для полей в этой модели будет поступать непосредственно из ввода пользователя в форме, а другая половина, которую я импортирую из социальной сети, которую они аутентифицируют при входе в систему. Как я могу это реализовать?Как сохранить в базу данных Django вручную?

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'] 

Итак, теперь у меня есть данные для «firstname» в виде строки. Как сохранить это в той же модели? Модель будет включать поле с именем firstname, которое будет пустым, если не будет доступной информация о социальной аутентификации.

Большое спасибо за помощь!

ответ

2

Поскольку метод save возвращает Model object, вы можете изменить его снова, прежде чем окончательно сохранить его в базу данных:

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

Спасибо Maxime! Извините за задержку в ответе! – aaravam

Смежные вопросы