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

Django使用User.objects.create_user创建用户报错:create_user() takes from 2 to 4 positional arguments but 5 were given

解决Django User.objects.create_user() 参数数量错误问题

嘿,这个问题很常见,我来帮你捋清楚:

你遇到的错误create_user() takes from 2 to 4 positional arguments but 5 were given,本质是传递参数的方式不对。Django原生的User.objects.create_user()方法不支持第四个位置参数,你把friendid直接作为位置参数传进去,就导致参数数量超标了。

先看看原生方法的签名:

def create_user(self, username, email=None, password=None, **extra_fields):

这里的规则很明确:

  • username是必填的位置参数
  • email和password是可选的位置参数(最多再加这两个)
  • 任何额外的用户字段,都必须通过关键字参数来传递

所以修正的方法很简单,把friendid改成关键字参数传入就行:

# 写法一:保留前三个位置参数,第四个用关键字传递
myuser = User.objects.create_user(username, email, password, friendid=friendid)

或者更推荐清晰的全关键字写法,避免后续再犯类似错误:

# 写法二:所有参数都用关键字,一目了然
myuser = User.objects.create_user(
    username=username,
    email=email,
    password=password,
    friendid=friendid
)

额外提醒一句:如果你的User模型是自定义的(比如继承了AbstractUser并添加了friendid字段),那这样传是完全没问题的;如果friendid不是用户模型的字段,那你得检查是不是字段名写错了,或者需要在创建用户后再单独给对象赋值~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:17:45