Django数据库无法存储数据,实例化appointment模型时报TypeError
Django模型实例创建报错:TypeError: appointment() got an unexpected keyword argument 'name'
问题代码与报错
views.py 相关代码
def thanks(request): if request.method == 'POST': name = request.POST['name'] email = request.POST['email'] phone= request.POST['phone'] doctor = request.POST['doctor'] msg = request.POST['reason'] print(name, email, phone, msg) appointment_db = appointment(name=name, email=email, phone=phone, doctor=doctor, message=msg) appointment_db.save() return render(request, "thanks.html", {"name": name})
models.py 模型代码
from django.db import models # Create your models here. class appointment(models.Model): count=models.AutoField(primary_key=True) name= models.CharField(max_length=100) email= models.EmailField(max_length=1000) phone = models.IntegerField() message =models.TextField(max_length=5000) doctor = models.CharField(max_length=100) def __str__(self): return self.name + " | "+ "Doctor : "+ self.doctor
报错信息
TypeError: appointment() got an unexpected keyword argument 'name'
错误原因
虽然模型代码里明确定义了name字段,但报错提示该参数不被识别,最常见的原因是模型修改后未执行数据库迁移操作,导致数据库中的appointment表实际没有name字段,和代码中的模型类结构不匹配。此外也需要确认views.py中导入的appointment是否是你自己定义的模型,而非其他同名类。
解决方案
- 生成迁移文件:在项目根目录下执行命令
python manage.py makemigrations
- 应用迁移到数据库:接着执行
python manage.py migrate
- 验证迁移结果:可以通过Django后台管理查看appointment数据是否能正常添加
name字段,或者直接查看数据库表结构确认name字段存在。 - 检查模型导入:确保views.py顶部的导入语句正确,比如:
from .models import appointment
避免导入了其他模块的同名appointment类。
内容的提问来源于stack exchange,提问作者Abdul Moiz Shah
相关产品推荐
相关产品推荐

