I have a custom user model in django made using AbstractUser. I am using the django allauth package for my authentication. I have made custom fields in both but am unable to link both of them.
models.py
from django.db import models
from django.conf import settings
from django.shortcuts import reverse
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
age = models.CharField(max_length=30, blank=True)
phone = models.CharField(max_length=30, blank=True)
address = models.CharField(max_length=30,blank=True)
gender = models.CharField(max_length=30,blank=True)
forms.py
from allauth.account.forms import SignupForm
from django.contrib.auth import get_user_model
from .models import User
class MyCustomSignupForm(SignupForm):
first_name = forms.CharField(max_length=30, label='First Name')
last_name = forms.CharField(max_length=30, label='Last Name')
age = forms.CharField(max_length=30, label='Age')
phone = forms.CharField(max_length=30, label='Phone Number')
address = forms.CharField(max_length=30, label='Address')
gender = forms.CharField(max_length=30,label = 'Gender')
print('FN',first_name)
print('Age',age)
def signup(self, request, user):
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.age = self.cleaned_data['age']
user.phone = self.cleaned_data['phone']
user.address = self.cleaned_data['address']
user.gender = self.cleaned_data['gender']
user.save()
return user
I have defined a customUserAdmin
admin.py
from django.contrib import admin
from .models import Medicine,Order,OrderItem,Pharmacy,Address
from django.contrib.auth.admin import UserAdmin
from .models import User
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth import get_user_model
class CustomUserAdmin(UserAdmin):
"""Define admin model for custom User model with no username field."""
fieldsets = (
(None, {'fields': ('email', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name','age','phone','address','gender')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
'groups', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'password1', 'password2'),
}),
)
list_display = ('email', 'first_name', 'last_name', 'is_staff')
search_fields = ('email', 'first_name', 'last_name')
ordering = ('email',)
admin.site.register(get_user_model(), CustomUserAdmin)
I have registered my custom user model in settings.py using
AUTH_USER_MODEL = 'core.User'
In both the django allauth signup page and the custom user model the fields are shown. But when I signup and add values in the custom fields they are not stored in the user model in the database. I am unable to link the signup page and user model.