我有Django的custom user modelMyUser
有一个额外的字段保存自定义用户模型:与Django的allauth
# models.py
from django.contrib.auth.models import AbstractUser
class MyUser(AbstractUser):
age = models.PositiveIntegerField(_("age"))
# settings.py
AUTH_USER_MODEL = "web.MyUser"
我还根据to these instructions定制allauth Signup form class有:
# forms.py
class SignupForm(forms.Form):
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
age = forms.IntegerField(max_value=100)
class Meta:
model = MyUser
def save(self, user):
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.age = self.cleaned_data['age']
user.save()
# settings.py
ACCOUNT_SIGNUP_FORM_CLASS = 'web.forms.SignupForm'
提交SignupForm
后(属性MyUser.age
的字段被正确渲染),我得到这个错误:
IntegrityError at /accounts/signup/
(1048, "Column 'age' cannot be null")
什么是存储自定义用户模型的正确方法?
django-allauth:0.12.0; django:1.5.1; Python的2.7.2
我猜测是'user.age = self。clean_data ['age']'以某种方式评估为'None'。您可以验证该值吗?什么'user'参数被发送到'save'方法中? – karthikr
您必须从'save'方法返回'user'也'返回用户' –
@karthikr我发现'save()'方法没有执行。当在['django-allauth/allauth/account/forms.py#269']中创建新用户时引发异常(https://github.com/pennersr/django-allauth/blob/master/allauth/account /forms.py#L269)。 – illagrenan