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

Django报错:Profile()收到意外关键字参数'id_user'求助

Django报错:Profile() got unexpected keyword arguments: 'id_user' 解决方法及Admin配置

问题原因

你的Profile模型中,id_user = models.IntegerField这一行缺少括号,导致Django无法将其识别为有效数据库字段——你现在是把字段类本身赋值给了id_user,而非创建字段实例。因此在视图中创建Profile时传入id_user=user_model.id,Django会判定这个参数未定义,抛出报错。

另外,这个id_user字段完全冗余:你已经通过user = models.ForeignKey(User, on_delete=models.CASCADE)建立了与User的关联,直接通过profile.user.id即可获取用户ID,没必要单独存储。

修复步骤

1. 修正Profile模型

修改models.py,建议直接删除冗余的id_user字段:

from django.db import models
from django.contrib.auth import get_user_model

User = get_user_model()

class Profile(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    bio = models.TextField(blank=True)
    profileimg = models.ImageField(upload_to='profile_images', default='book-icon.png')
    location = models.CharField(max_length=100, blank=True)

    def __str__(self):
        return self.user.username

如果执意保留该字段,需补全括号:id_user = models.IntegerField(),但不推荐这种做法。

2. 调整视图代码

删除id_user参数,修改视图中创建Profile的代码:

# 原代码
new_profile = Profile.objects.create(user=user_model, id_user=user_model.id)
# 修改后
new_profile = Profile.objects.create(user=user_model)

3. 执行数据库迁移

修改模型后必须执行迁移命令,更新数据库结构:

python manage.py makemigrations
python manage.py migrate

在Admin门户查看Profile

在app目录下的admin.py中注册Profile模型:

from django.contrib import admin
from .models import Profile

admin.site.register(Profile)

重启服务器后,登录Admin后台就能看到Profile的管理入口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:32:29