【发布时间】:2018-11-05 16:06:28
【问题描述】:
我正在开发一个包含敏感用户数据的 Django 应用程序,因此我采取了许多步骤来匿名用户对象及其数据。
我创建了自定义“用户”对象,它继承了 AbstractBaseUser 模型,如下所示:
class User(AbstractBaseUser, PermissionsMixin):
(...)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
(...)
它有以下链接的ModelAdmin 对象:
from django.contrib.auth.forms import UserChangeForm
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
form = UserChangeForm
我使用 UUID 字段作为主键以确保最大程度的匿名性,但我希望能够在 Django Admin 中重置用户密码(就像你可以使用默认的 User 对象一样)
但是,当我在管理员中打开用户并按链接更改密码时,我收到以下错误消息:
User with ID "21362aca-6918-47ea-9b29-275350a89c54/password" doesn't exist. Perhaps it was deleted?
管理员 url 仍然需要一个整数作为其 pk 值的 url。
所以看来我必须覆盖 ModelAdmin 定义中的管理 url 配置,但我想知道是否有更简单的方法来实现所需的结果 - 因为我想用 UUID 字段替换 User.pk 是相当频繁地发生,我认为许多开发人员都遇到了这个问题。我试图找到某种设置/切换来实现这一点,但无济于事,我错过了什么吗?
【问题讨论】:
-
请分享您的网址。看起来它也占用了
password部分。
标签: python django django-admin