【发布时间】:2022-09-28 21:25:36
【问题描述】:
所以要使用电子邮件作为用户名,我会像这样覆盖内置的User 模型(灵感来自Django source code)
模型.py
class User(AbstractUser):
username = None
email = models.EmailField(unique=True)
objects = UserManager()
USERNAME_FIELD = \"email\"
REQUIRED_FIELDS = []
def __str__(self):
return self.email
管理员.py
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
fieldsets = (
(None, {\"fields\": (\"email\", \"password\")}),
((\"Personal info\"), {\"fields\": (\"first_name\", \"last_name\")}),
(
(\"Permissions\"),
{
\"fields\": (
\"is_active\",
\"is_staff\",
\"is_superuser\",
\"groups\",
\"user_permissions\",
),
},
),
((\"Important dates\"), {\"fields\": (\"last_login\", \"date_joined\")}),
)
add_fieldsets = (
(
None,
{
\"classes\": (\"wide\",),
\"fields\": (\"email\", \"password1\", \"password2\"),
},
),
)
list_display = (\"email\", \"is_active\", \"is_staff\", \"is_superuser\")
list_filter = (\"is_active\", \"is_staff\", \"is_superuser\")
search_fields = (\"email\",)
ordering = (\"email\",)
filter_horizontal = (\"groups\", \"user_permissions\",)
但这就是我去管理站点更改用户时的样子:
密码是可见的和未散列并且没有链接到更改密码形式。
与默认 Django 项目的外观相比:
密码是不可见的并且有一个链接到更改密码表格
很明显我错过了一些东西,但我无法弄清楚它是什么。
-
您可以添加views.py 或serializers.py 吗?
-
我还没有那么远。我需要先解决这个问题。我可以通过调用
make_password函数在视图中处理这个问题,但这也应该在管理站点中解决。
标签: python django django-models django-admin