【问题标题】:Django AbstractUser not working properlyDjango AbstractUser 无法正常工作
【发布时间】:2014-03-07 11:17:06
【问题描述】:

我正在尝试从 AbstractUSer 继承我的 models.py 看起来像:

class MyUser(AbstractUser):        
    created = models.DateTimeField(auto_now_add=True)

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

MyUser._meta.get_field_by_name('email')[0]._unique=True

现在通过将电子邮件声明为唯一字段并将用户名声明为必填字段,我的超级用户已成功创建并且正在正确验证,但是在创建任何其他用户时我遇到了问题,就好像我正在通过我的管理页面创建任何用户一样它没有经过身份验证。它总是返回

没有

我的 admin.py:

from django.contrib import admin
from credilet.models import *

admin.site.register(MyUser)  

我在想的是 create_user 没有被正确调用,就好像我在我的管理页面中看到密码没有被散列一样,这意味着 create_user 没有被正确调用。请有人帮忙解决它,或者即使你有关于 abstractuser 的适当文档

不是abstractbaseuser

所以请在解决方案中参考我。

谢谢

【问题讨论】:

    标签: django django-models models django-users


    【解决方案1】:

    我认为您应该将 UserAdmin 添加到 Myuser 的 admin.py 中 如果你不添加 UserAdmin ,密码不能用 django 散列:

    from django.contrib import admin
    from credilet.models import *
    from django.contrib.auth.admin import UserAdmin
    
    admin.site.register(MyUser, UserAdmin) # add UserAdmin
    

    【讨论】:

      【解决方案2】:

      如果你想改变你必须使用 AbstractBaseUser 的认证系统, look at this full example.

      AbstractUser 可以Extend Django’s default User

      【讨论】:

      • 我只想使用电子邮件作为我的用户名,但是通过抽象基本用户扩展它我必须通过所有后端系统我的意思是我必须定义我的自定义 create_user 和 create_superuser 以及所有这些东西为了避免我使用抽象用户所以有没有可能我可以使用抽象用户并且只定义我的用户名和其余的东西就像 django 的用户对象一样
      猜你喜欢
      • 2013-10-21
      • 2013-02-25
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 2017-08-13
      • 2016-06-05
      相关资源
      最近更新 更多