gpt4 book ai didi

python - 'list_display[2]' 的值指的是 'first_name' ,它不是可调用的、 'UserAdmin' 的属性或 'authentication.User' 上的属性

转载 作者:行者123 更新时间:2023-12-04 07:51:43 25 4
gpt4 key购买 nike

我正在尝试将以下代码添加到 admin.py确保从 django admin 创建的用户密码将被散列。

from django.contrib import admin
from .models import *

from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin


class UserAdmin(DjangoUserAdmin):
pass


# Register your models here.
admin.site.register(User, UserAdmin)
但是当我尝试时,我得到了以下信息:

<class 'authentication.admin.UserAdmin'>: (admin.E108) The value of'list_display[2]' refers to 'first_name', which is not a callable, anattribute of 'UserAdmin', or an attribute or method on'authentication.User'.


用户模型看起来像这样
class User(AbstractBaseUser, PermissionsMixin):

id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
username = models.CharField(max_length=255, unique=True, db_index=True)
email = models.EmailField(max_length=255, unique=True, db_index=True)

is_verified = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)

created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

balance = models.FloatField(default=0.0)

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']

objects = UserManager()

def __str__(self):
return self.email

def tokens(self):
"""" Метод получения токена """
refresh = RefreshToken.for_user(self)
return {
'refresh': str(refresh),
'access': str(refresh.access_token)
}

def has_delete_permission(self, *args, **kwargs):

return True if self.is_staff is True else False

最佳答案

您使用 UserAdmin ,但在 UserAdmin [GitHub] ,这适用于像 first_name 这样的字段, last_name等未在您的自定义中定义的 User模型。

@admin.register(User)
class UserAdmin(admin.ModelAdmin):
# …
fieldsets = (
(None, {'fields': ('username', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
(_('Permissions'), {
'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions'),
}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
)
# …
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups')
search_fields = ('username', 'first_name', 'last_name', 'email')
ordering = ('username',)
filter_horizontal = ('groups', 'user_permissions',)
# …

因此,您将不得不重写 fieldsets , list_display , 和 search_fields以至于这些不再提及 first_namelast_name领域。你当然也可以改变你 User模型来包含这些字段,但现在 UserAdmin 之间只是不匹配和您的 User模型。
此外, @AbdulAzizBarkat says , 这个模型管理员还有一个 formadd_form ,这也将包括这些字段。

关于python - 'list_display[2]' 的值指的是 'first_name' ,它不是可调用的、 'UserAdmin' 的属性或 'authentication.User' 上的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66929896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com