You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Djoser创建用户时first_name等附加字段未被存储该如何解决

问题原因

Djoser默认的用户创建序列化器仅开放了username、email、password三个可写入字段,你请求中携带的其他额外字段会被序列化器直接过滤,不会写入数据库,和你当前已有的DJOSER配置项无关。

解决方法

1. 自定义用户创建序列化器

在你项目对应App的serializers.py文件中新增自定义序列化器,继承Djoser原生的UserCreateSerializer,扩展需要支持的字段:

from djoser.serializers import UserCreateSerializer
from django.contrib.auth.models import User

class CustomUserCreateSerializer(UserCreateSerializer):
    class Meta(UserCreateSerializer.Meta):
        model = User
        # 按你的业务需求添加需要支持写入的字段
        fields = ('id', 'username', 'email', 'password', 'first_name', 'last_name', 'is_staff')

2. 更新DJOSER配置

在settings.py的DJOSER配置字典中新增序列化器指向配置,指定用户创建流程使用你自定义的序列化器,原有其他配置保持不变即可:

DJOSER = {
    # 你原来的所有配置项保持不变
    'PASSWORD_RESET_CONFIRM_URL': '#/password/reset/confirm/{uid}/{token}',
    'USERNAME_RESET_CONFIRM_URL': '#/username/reset/confirm/{uid}/{token}',
    'ACTIVATION_URL': '#/activate/{uid}/{token}',
    'SEND_ACTIVATION_EMAIL': True,
    'SEND_CONFIRMATION_EMAIL': True,
    'PASSWORD_CHANGED_EMAIL_CONFIRMATION': True,
    'USERNAME_CHANGED_EMAIL_CONFIRMATION': True,
    'USER_CREATE_PASSWORD_RETYPE': True,
    'SET_PASSWORD_RETYPE': True,
    'PASSWORD_RESET_CONFIRM_RETYPE': True,
    'LOGOUT_ON_PASSWORD_CHANGE' : True,
    'PASSWORD_RESET_SHOW_EMAIL_NOT_FOUND': False,
    'USERNAME_RESET_SHOW_EMAIL_NOT_FOUND': False,
    'token': 'djoser.serializers.TokenSerializer',
    'token_create': 'djoser.serializers.TokenCreateSerializer',
    # 新增以下序列化器配置
    'SERIALIZERS': {
        # 替换为你实际的App名对应的序列化器路径
        'user_create': '你的App名称.serializers.CustomUserCreateSerializer',
    }
}

注意事项

  • is_staff是Django用户模型的管理员标识字段,如果你对公共注册接口开放该字段的写入权限,会存在普通用户自行注册为管理员的安全风险。如果仅需管理员可创建带is_staff标识的账号,建议不要在公共注册接口的序列化器中加入该字段,可单独给后台管理接口配置专属序列化器。
  • 如果需要后续用户信息查询接口也返回first_name、last_name等自定义字段,可同时自定义继承自djoser.serializers.UserSerializer的序列化器,在SERIALIZERS配置中新增'user': '你的App名称.serializers.自定义User序列化器名'即可。

内容的提问来源于stack exchange,提问作者Dark Sorrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 18:42:02