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

Django DRF开发注册接口报错User() got an unexpected keyword argument 'firstname'如何解决

问题原因

报错的核心是两个逻辑错误:

  • Django内置(包括继承AbstractUser自定义的)用户模型的姓名字段为first_name、last_name(带中间下划线),你调用create_user时传入的参数名是firstname、lastname(无下划线),和模型字段名不匹配,直接触发参数不识别报错。
  • create_user方法默认只接收username、email、password几个核心参数,你自定义添加的brand、is_business这类扩展字段不能直接作为create_user的入参传递,需要单独赋值保存。

修复方案

把RegisterSerializer中的create方法替换为如下逻辑即可:

def create(self, validated_data):
    # 先传入create_user原生支持的核心参数创建用户对象
    user = User.objects.create_user(
        username=validated_data['username'],
        first_name=validated_data['first_name'],
        last_name=validated_data['last_name'],
        email=validated_data['email'],
        password=validated_data['password']
    )
    # 单独给自定义扩展字段赋值后保存
    user.brand = validated_data.get('brand')
    user.is_business = validated_data.get('is_business', False)
    user.save()
    return user

补充注意

如果你使用的是自定义User模型,需要确认模型类中确实定义了brand、is_business两个字段,并且已经执行过makemigrations和migrate操作同步字段到数据库,避免后续出现字段不存在的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 17:03:02