Django-allauth 自定义用户模型错误
Django-allauth custom usermodel error
我的 Django 小项目有一些问题。
我使用 allauth 来登录用户,我还想在登录时存储一些额外的信息,在这种特殊情况下 "function"。我尝试像文档 https://docs.djangoproject.com/en/1.8/topics/auth/customizing/
中解释的那样扩展用户 class
一切都很好,除了当我尝试注册时出现错误(如下所述)。所以我的问题是如何存储从 UserProfile 模型中的表单获取的信息?
我的models.py
from django.contrib.auth.models import User
from django.db import models
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile', unique=True)
function = models.CharField("Function", max_length=150, blank=False)
我的forms.py
from django import forms
class SignupForm(forms.Form):
first_name = forms.CharField(max_length=35, label='First name')
last_name = forms.CharField(max_length=35, label='Last name')
function = forms.CharField(max_length=35, label='Function')
def signup(self, request, user):
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.function = self.cleaned_data['Function']
user.save()
我的settings.py
ACCOUNT_SIGNUP_FORM_CLASS = 'anmeldung.forms.SignupForm'
错误:
in this line: user.function = self.cleaned_data['Function']
Exception Type: KeyError at /accounts/signup/
Exception Value: 'Function'
感谢您的宝贵时间,祝您有愉快的一天!
我认为这不会保存...您无法将函数保存到用户,因为该列存在于 UserProfile 中。请记住,UserProfile 只是默认用户模型的扩展。
因此,在注册时,您需要创建一个 UserProfile,例如:
def signup(self, request, user):
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
function = self.cleaned_data['function']
# Save the default User fields first, so you can get the User instance
user.save()
# Use the created 'user' to create a UserProfile
userprofile = UserProfile(user=user, function=function)
userprofile.save()
我的 Django 小项目有一些问题。
我使用 allauth 来登录用户,我还想在登录时存储一些额外的信息,在这种特殊情况下 "function"。我尝试像文档 https://docs.djangoproject.com/en/1.8/topics/auth/customizing/
中解释的那样扩展用户 class
一切都很好,除了当我尝试注册时出现错误(如下所述)。所以我的问题是如何存储从 UserProfile 模型中的表单获取的信息?
我的models.py
from django.contrib.auth.models import User
from django.db import models
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile', unique=True)
function = models.CharField("Function", max_length=150, blank=False)
我的forms.py
from django import forms
class SignupForm(forms.Form):
first_name = forms.CharField(max_length=35, label='First name')
last_name = forms.CharField(max_length=35, label='Last name')
function = forms.CharField(max_length=35, label='Function')
def signup(self, request, user):
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.function = self.cleaned_data['Function']
user.save()
我的settings.py
ACCOUNT_SIGNUP_FORM_CLASS = 'anmeldung.forms.SignupForm'
错误:
in this line: user.function = self.cleaned_data['Function']
Exception Type: KeyError at /accounts/signup/
Exception Value: 'Function'
感谢您的宝贵时间,祝您有愉快的一天!
我认为这不会保存...您无法将函数保存到用户,因为该列存在于 UserProfile 中。请记住,UserProfile 只是默认用户模型的扩展。
因此,在注册时,您需要创建一个 UserProfile,例如:
def signup(self, request, user):
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
function = self.cleaned_data['function']
# Save the default User fields first, so you can get the User instance
user.save()
# Use the created 'user' to create a UserProfile
userprofile = UserProfile(user=user, function=function)
userprofile.save()