У меня есть Джанго custom user modelMyUser
с одним дополнительным полем:Сохранение пользовательской модели пользователя с Джанго-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
оказано corectly), я получаю эту ошибку:
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.cleaned_data ['age'] 'оценивает' None' каким-то образом .. Вы можете проверить значение? и какой параметр 'user' отправляется в метод' save'? – karthikr
Вы должны вернуть 'user' из' save' method также 'return user' –
@karthikr Я обнаружил, что метод' save() 'не выполняется. Исключение выдается, когда новый пользователь создается в ['django-allauth/allauth/account/forms.py # 269'] (https://github.com/pennersr/django-allauth/blob/master/allauth/account /forms.py#L269). – illagrenan