AttributeError at /accounts/register/ Manager is not available; 'auth.User' has been swapped for 'accounts.CustomUser'
у меня такая проблема при регистрации пользователя через шаблон register.html вот точная проблема
AttributeError at /accounts/register/ Менеджер недоступен; 'auth.User' был заменен на 'accounts.CustomUser'
я создал пользовательскую модель пользователя и пользовательский менеджер, которые перечислены здесь
файл models.py
from django.contrib.auth.base_user import AbstractBaseUser
from django.db import models
from django.contrib.auth.models import AbstractUser, BaseUserManager, PermissionsMixin
from datetime import datetime
from Etesting.settings import USE_I18N
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
# Create your models here.
class MyCustomUserManager(BaseUserManager):
def create_user(self, email,username, password=None, **extra_fields):
if not username:
raise ValueError('There must be a username')
if not email:
raise ValueError('There must be an email')
user=self.model(
email=self.normalize_email(email),
username=username, **extra_fields
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, username, password,**extra_fields):
extra_fields.setdefault('is_admin',True)
extra_fields.setdefault('is_staff',True)
extra_fields.setdefault('is_superuser',True)
return self.create_user(email,
username,
password, **extra_fields)
class CustomUser(AbstractBaseUser, PermissionsMixin):
username=models.CharField(max_length=50, unique=True)
email=models.EmailField(verbose_name='email', unique=True)
first_name=None
last_name=None
is_admin=models.BooleanField(default=False)
is_staff=models.BooleanField(default=False)
is_superuser=models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
USERNAME_FIELD='email'
REQUIRED_FIELDS=['username']
objects = MyCustomUserManager()
def __str__(self):
return self.username
def has_perm(self, perm, obj=None):
"""
Return True if the user has the specified permission. Query all
available auth backends, but return immediately if any backend returns
True. Thus, a user who has permission from a single auth backend is
assumed to have permission in general. If an object is provided, check
permissions for that object.
"""
# Active superusers have all permissions.
if self.is_active and self.is_superuser:
return True
def has_module_perms(self, app_label):
"""
Return True if the user has any permissions in the given app label.
Use similar logic as has_perm(), above.
"""
# Active superusers have all permissions.
if self.is_active and self.is_superuser:
return True
registerForm.py Файл
from django import forms
from ..models import CustomUser
from django.contrib.auth.forms import UserCreationForm
class RegisterForm(UserCreationForm):
email=forms.EmailField()
class meta:
model=CustomUser
fields=( 'username','email', 'password')
файлviews.py
from django.contrib.auth.models import User
from django.shortcuts import render
from django.views import View
from django.shortcuts import render, redirect
from .forms.registerform import RegisterForm
from .forms.loginform import LoginForm
from django.contrib.auth import get_user_model
from django.db.models import manager
User=get_user_model()
class LoginView(View):
def get(self, request):
form=LoginForm()
context={
'form':form
}
return render(request, 'login.html', context)
class RegisterView(View):
def get(self, request):
form=RegisterForm()
context={}
context['form']=form
return render(request, 'register.html', context)
def post(self,request):
form=RegisterForm(request.POST or None)
if form.is_valid():
form.save()
return redirect('login')
return redirect('register')
class IndexView(View):
def get(self, request):
return render(request, 'base.html')
файлurls.py
from django.contrib import admin
from django.urls import path, include
from .views import LoginView, RegisterView, IndexView
urlpatterns = [
path('', IndexView.as_view(), name='index'),
path('login/', LoginView.as_view()),
path('register/', RegisterView.as_view()),
файл register.html
{% extends 'base.html' %}
{% load static %}
{% block content %}
<!-- Breadcrumb Start -->
<div class="breadcrumb-wrap">
<div class="container-fluid">
<ul class="breadcrumb">
<li class="breadcrumb-item"><a href="#">Home</a></li>
<li class="breadcrumb-item"><a href="#">Products</a></li>
<li class="breadcrumb-item active">Register</li>
</ul>
</div>
</div>
<!-- Breadcrumb End -->
<!-- Register Start -->
<div class="login">
<div class="container-fluid">
<div class="row"><div class="col-lg-6">
<div class="register-form">
<form action="" method="POST">
{% csrf_token %}
<div class="row">
{{form}}
<div class="col-md-12">
<button type="submit"
class="btn">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}
Я перепробовал много решений, но не знаю, где возникает проблема. Я новичок в django, может ли кто-нибудь помочь мне решить эту проблему.