0

我最近在我的 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'
4

0 回答 0