Django CreateView не работает с пользовательской моделью auth
У меня есть простое приложение с очень простой пользовательской моделью авторизации и менеджером базы. Когда я пытаюсь создать пользователя с помощью CreateView, я не получаю никаких ошибок, и в базе данных не создается никаких записей о пользователе. Вот что у меня есть.
models.py:
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
from django.contrib.auth.models import PermissionsMixin
from django.db import models
class AccountManager(BaseUserManager):
def create_user(self, email, username, password, **other_fields):
....
....
email = self.normalize_email(email)
user = self.model(username=username, email=email, **other_fields)
user.set_password(password)
user.save()
def create_superuser(self, email, username, password, **other_fields):
....
return self.create_user(email, username, password, **other_fields)
class UserAccount(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(max_length=60, unique=True)
username = models.CharField(max_length=30, unique=True)
first_name = models.CharField(max_length=30, blank=True)
last_name = models.CharField(max_length=30, blank=True)
date_joined = models.DateTimeField(default=timezone.now)
last_login = models.DateTimeField(default=timezone.now)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
objects = AccountManager()
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']
def __str__(self):
return self.username
Вот мой файл forms.py:
class CreateUserForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CreateUserForm, self).__init__(*args, **kwargs)
for visible in self.visible_fields():
# If it's a checkbox, add form-check-input css class, else form-control class
if visible.field.widget.__class__.__name__ == forms.CheckboxInput().__class__.__name__:
visible.field.widget.attrs['class'] = 'form-check-input'
else:
visible.field.widget.attrs['class'] = 'form-control'
class Meta:
model = get_user_model()
fields = ('username', 'email', 'password')
А вот как я вызываю форму в файле views.py:
from .forms import CreateUserForm
class CreateNewUser(CreateView):
form_class = CreateUserForm
template_name = 'Users/create_user.html'
У меня есть AUTH_USER_MODEL, указывающий на класс UserAccount в settings.py, и я могу создавать пользователей из панели /admin/, но когда я пытаюсь создать пользователя с помощью этого CreateView, он просто ничего не делает. Никаких сообщений об ошибках или успехе ни в консоли, ни во внешнем интерфейсе (я использую {{ form.errors }} для их поиска).
Я попробовал использовать функцию form_valid из CreateView, чтобы вручную сохранить объект, но это тоже не работает. Я также попробовал использовать метод save() в классе формы, но с ним возникла та же проблема. Другие сообщения, которые я встречал, похожие на мою проблему, тоже не помогли.