我是python新手,现在在制作一个问诊系统网站的一个子功能:预约挂号。我在User类中定义了department属性,并且在py文件中的路由中调用了这个属性,但运行后出现了找不到这个属性的报错。
AttributeError: type object 'User' has no attribute 'department'
这是我的路由代码:
if request.method == 'POST':
doctor = User.query.get(doctor_id)
if not doctor or doctor.department != session.get('selected_department'):
flash('非法操作:医生不属于所选科室!', 'error')
return redirect(url_for('appointment'))
if 'department' in request.form:
department = request.form.get('department')
session['selected_department'] = department
return redirect(url_for('appointment'))
这是我的数据库的相关代码:
from flask_sqlalchemy import SQLAlchemy # type: ignore
db = SQLAlchemy()
class User(db.Model):
department = db.Column(db.String(50), nullable=True)
def __repr__(self):
return f'<User {self.username}>'
这是Python新手常遇到的一个坑!让我用简单的话解释一下。
根据错误信息
AttributeError: type object 'User' has no attribute 'department'
,问题可能是你在某处直接用了User.department
而不是通过一个实例来访问它。你贴的路由代码看起来是没问题的:
这部分写得对,因为你先获取了一个doctor对象,然后才访问它的department属性。
但我猜在其他地方你可能直接用了
User.department
。检查一下整个py文件,看看是不是有类似这样的代码?几个常见的解决办法:
如果还是找不到问题,可以把完整的错误信息(包括traceback部分)贴出来,这样我能看到具体是哪一行出错了。