При попытке создать свою собственную модель пользователя и администратора, тест выдает следующую ошибку.
: (admin.E019) Значение «filter_horizontal [0]» относится к «groups», которое не является атрибутом «account.User».
: (admin.E019) Значение «filter_horizontal [1]» относится к «user_permissions», которое не является атрибутом «account.User».
: (admin.E116) Значение «list_filter [1]» относится к «is_superuser», которое не относится к полю.
: (admin.E116) Значение 'list_filter [3]' относится к 'groups', что не относится к полю.
models.py
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
class UserManager(BaseUserManager):
def create_user(self,username,email,password=None, **extra_fields):
user=self.model(
username=username.lower(),
email=self.normalize_email(email),
**extra_fields)
#user name is converted into lowercase
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self,username,email,password=None):
user = self.create_user(
username,email
)
user.set_password(password)
user.is_superuser=True
user.is_staff =True
user.save(using=self._db)
return user
class User(AbstractBaseUser):
username=models.CharField(max_length=255,unique=True)
email=models.EmailField(max_length=255,unique=True)
password=models.CharField(max_length=255)
is_staff =models.BooleanField(default=False)
is_active=models.BooleanField(default=True)
objects=UserManager()
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']
admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from . import models
# Register your models here.''''
class UserAdmin(BaseUserAdmin):
ordering = ['id']
list_display=['username','email']
admin.site.register(models.User,UserAdmin)
admintest.py
from django.test import TestCase, Client
from django.contrib.auth import get_user_model
from django.urls import reverse
class AdminTests(TestCase):
def setUp(self):
self.client = Client()
self.admin_user = get_user_model().objects.create_superuser(
username='admin',
password='123',
email='fda@gmail.com'
)
self.client.force_login(self.admin_user)
self.user = get_user_model().objects.create_user(
username='mantis',
password='123',
email='111'
)
def test_users_listed(self):
"""Test that users are listed on the user page"""
url = reverse('admin:core_user_changelist')
res = self.client.get(url)
self.assertContains(res, self.user.username)
self.assertContains(res, self.user.email)