如何手动保存到Django的数据库?

时间:2016-06-09 16:58:57

标签: django django-models django-forms django-allauth

我试图在Django中创建一个UserProfile模型。此模型中字段的一半信息将直接来自用户在表单中的输入,但另一半我从他们登录时进行身份验证的社交网络导入。我将如何实现这一目标?

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的字段,除非有社会认证信息,否则该字段将为空。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分: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()