I have created a custom user model 'User' and have declared in settings.py as AUTH_USER_MODEL Also i have two other models consumer and workman which has an onetoone relation with my custom user. i created two forms for registering customer and workman but as i fill form(it doesnt even check validation) and submit, it says: Manager isn't available; 'auth.User' has been swapped for 'accounts.User'
models.py:
from django.contrib.auth.models import AbstractUser
from django.contrib.auth import get_user_model
# Create your models here.
class User(AbstractUser):
class Types(models.TextChoices):
CONSUMER = "CONSUMER" , "Consumer"
WORKMAN = "WORKMAN" , "Workman"
type = models.CharField(max_length=20,choices=Types.choices,default=Types.WORKMAN)
is_consumer = models.BooleanField(default=False)
is_workman = models.BooleanField(default=False)
class Consumer(models.Model):
user = models.OneToOneField(get_user_model(),on_delete=models.CASCADE,primary_key=True)
location = models.CharField(max_length=100)
class Workman(models.Model):
user = models.OneToOneField(get_user_model(),on_delete=models.CASCADE,primary_key=True)
contact = models.CharField(max_length=100)
views.py:
from .forms import ConsumerCreationForm, WorkmanCreationForm
from .models import Workman,Consumer
class consumersignupview(CreateView):
model = Consumer
form_class = ConsumerCreationForm
template_name = 'accounts/register.html'
success_url = '/'
class workmansignupview(CreateView):
model = Workman
form_class = WorkmanCreationForm
template_name = 'accounts/register.html'
success_url = '/'
forms.py:
from django.contrib.auth.forms import UserCreationForm
from django import forms
from .models import Consumer,Workman
class ConsumerCreationForm(UserCreationForm):
location = forms.CharField( max_length=100, required=False)
class meta(UserCreationForm.Meta):
model = Consumer
class WorkmanCreationForm(UserCreationForm):
contact = forms.CharField(max_length=100)
class meta(UserCreationForm.Meta):
model = Workman
full traceback:
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/account/wregister/
Django Version: 3.2.9
Python Version: 3.8.2
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'accounts.apps.AccountsConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\views\generic\base.py", line 70, in view
return self.dispatch(request, *args, **kwargs)
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\views\generic\base.py", line 98, in dispatch
return handler(request, *args, **kwargs)
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\views\generic\edit.py", line 172, in post
return super().post(request, *args, **kwargs)
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\views\generic\edit.py", line 141, in post
if form.is_valid():
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\forms\forms.py", line 175, in is_valid
return self.is_bound and not self.errors
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\forms\forms.py", line 170, in errors
self.full_clean()
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\forms\forms.py", line 374, in full_clean
self._post_clean()
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\contrib\auth\forms.py", line 117, in _post_clean
super()._post_clean()
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\forms\models.py", line 413, in _post_clean
self.instance.full_clean(exclude=exclude, validate_unique=False)
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\db\models\base.py", line 1223, in full_clean
self.clean()
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\contrib\auth\models.py", line 371, in clean
self.email = self.__class__.objects.normalize_email(self.email)
File "F:\Project Work\Proxy-Model\venv\lib\site-packages\django\db\models\manager.py", line 187, in __get__
raise AttributeError(
Exception Type: AttributeError at /account/wregister/
Exception Value: Manager isn't available; 'auth.User' has been swapped for 'accounts.User'