我最近在我的 DRF api 中切换到 Djoser 进行身份验证服务。
我有一个稍微调整的用户模型,其中 PK 已从 id 更改为 user_id。
当我调用 /auth/users/me/ 时,我收到以下错误:
django.core.exceptions.FieldError: Cannot resolve keyword 'id' into field. Choices are: date_joined, email, first_name, groups, user_id etc..
这是我当前的 Djoser 设置:
DJOSER = {
'USER_ID_FIELD': 'user_id',
'LOGIN_FIELD': 'email',
'USER_CREATE_PASSWORD_RETYPE': True,
'USERNAME_CHANGED_EMAIL_CONFIRMATION': True,
'PASSWORD_CHANGED_EMAIL_CONFIRMATION': True,
'SEND_CONFIRMATION_EMAIL': True,
'PASSWORD_RESET_CONFIRM_URL': 'password/reset/confirm/{uid}/{token}',
'USERNAME_RESET_CONFIRM_URL': 'email/reset/confirm/{uid}/{token}',
'ACTIVATION_URL': 'activate/{uid}/{token}',
'SEND_ACTIVATION_EMAIL': True,
'SERIALIZERS': {
'user_create': 'bb.serializers.RegisterSerializer',
'user_delete': 'djoser.serializers.UserDeleteSerializer'
},
}
如何将目标主键更改为指向 user_id?
理想情况下,我不必将字段名称更改为 id,因为我在整个项目中经常使用此字段。
任何帮助将不胜感激。
扩展用户模型:
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
user_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
is_connected = models.BooleanField(
_('Connected'),
default=False,
)
class Meta:
db_table = 'bb_user'