Django (管理员E116)“列表过滤器[3]”的值指的是“组”,而不是指字段

Django (管理员E116)“列表过滤器[3]”的值指的是“组”,而不是指字段,django,django-models,django-testing,Django,Django Models,Django Testing,当尝试创建我自己的用户模型和管理员时,测试给出以下错误 :admin.E019“filter\u horizontal[0]”的值引用了“groups”,它不是“account.User”的属性。 :admin.E019“filter\u horizontal[1]”的值指的是“user\u permissions”,它不是“account.user”的属性。 :admin.E116“列表过滤器[1]”的值指的是“是超级用户”,而不是指字段。 :admin.E116“列表过滤器[3]”的值指的是

当尝试创建我自己的用户模型和管理员时,测试给出以下错误

:admin.E019“filter\u horizontal[0]”的值引用了“groups”,它不是“account.User”的属性。 :admin.E019“filter\u horizontal[1]”的值指的是“user\u permissions”,它不是“account.user”的属性。 :admin.E116“列表过滤器[1]”的值指的是“是超级用户”,而不是指字段。 :admin.E116“列表过滤器[3]”的值指的是“组”,而不是指字段

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']
管理员

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)
您只需在类UserAbstractBaseUser中添加PermissionsMixin,例如UserAbstractBaseUser,PermissionsMixin 您可以通过以下方式导入它:从django.contrib.auth.models导入PermissionsMixin

您只需在类UserAbstractBaseUser中添加PermissionsMixin,例如UserAbstractBaseUser,PermissionsMixin 您可以使用以下内容导入它:从django.contrib.auth.models导入权限mxin

如果您查看django文档

在注释中,他们说您需要将自定义字段添加到字段集,以便编辑用户时使用字段,并为创建用户时使用的字段添加_字段集

因此,如果查看django文档,您需要将这些字段添加到UserAdmin类中

在注释中,他们说您需要将自定义字段添加到字段集,以便编辑用户时使用字段,并为创建用户时使用的字段添加_字段集

因此,您需要将这些字段添加到UserAdmin类中