提问人:Muhammad Nabeel 提问时间:12/5/2018 最后编辑:Davit TovmasyanMuhammad Nabeel 更新时间:3/28/2022 访问量:1871
Django 管理员错误“请更正以下错误。
Django admin error "Please correct the errors below."
问:
我已经制作了自定义 BaseUserManager 来创建用户,但是当我从 django 管理面板添加用户时,我收到“请更正以下错误”的错误,但我找不到出了什么问题。
Models.py:
class UserManager(BaseUserManager):
def create_user(self,email,password):
user = self.model(email=email)
user.set_password(password)
def create_superuser(self,email,password):
user = self.model(email=email)
user.set_password(password)
user.is_admin = True
user.is_superuser = True
user.is_staff=True
user.save(using=self._db)
class User(AbstractBaseUser,PermissionsMixin):
COMPANY='CO'
EMPLOYEE='EM'
STATUS_CHOICES=(
(COMPANY,'Company'),
(EMPLOYEE,'Employee'),
)
Status=models.CharField(max_length=2,
choices=STATUS_CHOICES,
default=EMPLOYEE)
user_image = models.CharField(max_length=100)
is_admin=models.BooleanField()
email=models.EmailField(unique=True)
is_staff=models.BooleanField(default=False)
object = UserManager()
USERNAME_FIELD='email'
REQUIRED_FIELDS = []
objects=models.Manager()
def get_short_name(self):
return self.email
Admin.py 文件:
class UserAdmin(UserAdmin):
list_display = ('email', 'is_admin')
list_filter = ('is_admin',)
fieldsets = (
(None, {'fields': ('email', 'password','Status','user_image','last_login')}),
('Permissions', {'fields': ('is_admin','is_staff','is_superuser','user_permissions','groups')}),
)
add_fieldsets= (
(None, {'fields': ('email', 'password','Status','user_image','last_login')}),
('Permissions', {'fields': ('is_admin','is_staff','is_superuser','user_permissions','groups')}),
)
search_fields = ('password',)
ordering = ('password',)
filter_horizontal = ()
admin.site.register(User,UserAdmin)
admin.site.register(Company)
admin.site.register(Employee)
admin.site.register(Job)
admin.site.register(AppliedJobs)
有人可以建议我做错了什么吗?当我从管理面板添加用户时,我总是收到错误。我无法弄清楚,因为我是第一次在baseusermanager上工作。
答:
0赞
GCru
9/20/2020
#1
我可以建议如何尝试找到问题。通常,您将参考表格,见下文:UserAdmin
class UserAdmin(UserAdmin):
add_form = SignUpForm
form = CustomUserChangeForm
您可以使用日志记录找出导致错误的原因。将以下 Mixin 添加到您的 and :SignUpForm
CustomUserChangeForm
import logging
logger = logging.getLogger(__name__)
# see https://stackoverflow.com/questions/20833638/how-to-log-all-django-form-validation-errors
class LoggingMixin(object):
def add_error(self, field, error):
if field:
logger.info('Form error on field %s: %s', field, error)
else:
logger.info('Form error: %s', error)
super().add_error(field, error)
# e.g.
class SignUpForm(LoggingMixin, UserCreationForm):
....
现在,登录或更改用户并检查日志以找出导致“请更正以下错误”的原因。
0赞
max_bstr
3/26/2022
#2
有同样的问题,答案很简单。
问题出在你的.Django 使用他自己的模式来添加新用户(你可以在文件中的模型中检查它)。您需要定义 和 的字段。add_fieldsets
UserAdmin
django.contrib.auth.admin.py
password1
password2
为了您的方便,我将它粘贴在那里:
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'password1', 'password2'),
}),
)
在这里,您有 2 个选项:
P.S. 在任何情况下您都需要定义 和 字段。username
password1
password2
- 使用超类字段并添加您的自定义:
add_fieldsets = UserAdmin.add_fieldsets + (
(None, {'fields': ('email', 'Status', 'user_image', 'last_login')}),
('Permissions', {'fields': ('is_admin', 'is_staff', 'is_superuser', 'user_permissions', 'groups')}),
)
- 由您自己定义:
add_fieldsets = (
(None, {'fields': ('username', 'email', 'password1', 'password2', 'Status', 'user_image', 'last_login')}),
('Permissions', {'fields': ('is_admin', 'is_staff', 'is_superuser', 'user_permissions', 'groups')}),
)
评论