Пользовательские формы Django Allauth не сохраняются в базе данных
Я пытаюсь расширить форму регистрации Django Allauth, чтобы она содержала дополнительные поля. Эти поля прекрасно отображаются в моей форме, но они не сохраняют отправленные данные в базе данных.
Я пробовал следующие решения здесь и здесь безрезультатно.
forms.py:
from allauth.account.forms import SignupForm
from django import forms
from .models import User
from django.forms.widgets import NumberInput
import datetime
class CustomSignupForm(SignupForm):
age = forms.CharField(max_length=30, label='Age')
date_of_birth = forms.DateField(widget = NumberInput(attrs={'type':'date'}))
def save(self, request):
user = super(CustomSignupForm, self).save(request)
user.age = self.cleaned_data['age']
user.date_joined = datetime.datetime.now()
user.date_of_birth = self.cleaned_data['date_of_birth']
user.save()
return user
models.py:
from django.db import models
# Create your models here.
class User(models.Model):
age = models.PositiveSmallIntegerField()
date_of_birth = models.DateField()
date_joined = models.DateField()
def __str__(self):
return self.name
settings.py:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
SITE_ID = 1
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED=True
ACCOUNT_EMAIL_VERIFICATION='mandatory'
ACCOUNT_AUTHENTICATED_LOGIN_REDIRECTS = False
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 3
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
LOGIN_REDIRECT_URL = '/'
ACCOUNT_FORMS = {
'signup': 'core.forms.CustomSignupForm',
}
Где-то упоминалось о наличии:
AUTH_USER_MODELS = 'myproject.User' однако это вызывает ошибку о том, что у пользователя нет обязательных полей.
Я не понимаю, где я ошибаюсь. Конечно, мне не нужно создавать другой объект пользователя и связывать его с тем же аутентифицированным пользователем? Должен быть более простой способ.
Любая помощь будет принята с благодарностью, спасибо.