如何解决Flask:从SQLAlchemy查询继承的类会在两个相似的上下文中带来不同的结果
我正在一个有两个不同用户的项目中:客户,员工。客户发帖,员工确认是否发帖。为此,我在User类上主要处理身份验证和基本过程,并且Client和Employee类都从该类继承。
实际上:
class User(UserMixin,db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer,primary_key=True)
username = db.Column(db.String(64),index=True,unique=True)
email = db.Column(db.String(120),unique=True)
password_hash = db.Column(db.String(128))
user_type = db.Column(db.String(32),nullable=False)
__mapper_args__ = {'polymorphic_identity': user_type}
class Client(User):
__tablename__ = 'client'
__mapper_args__ = {'polymorphic_identity':'client'}
id = db.Column(db.Integer,db.ForeignKey('user.id'),primary_key=True)
telephone = db.Column(db.String(120))
birthday = db.Column(db.String(120))
posts = db.relationship('Post',backref='author',lazy='dynamic')
class Employee(User):
__tablename__ = 'employee'
__mapper_args__ = {'polymorphic_identity':'employee'}
id = db.Column(db.Integer,primary_key=True)
employee_extra = db.Column(db.String(140))
当我想让所有客户进入我的路线之一时,就像这样:
@bp.route('/posts',methods=['GET','POST'])
@login_required
def posts():
clients = Client.query.all()
print(clients[0].birthday)
我得到类似AttributeError: 'User' object has no attribute 'birthday'.
的结果,因为结果是[<User 2>]
。
另一方面,当我设置测试环境时,我运行相同的查询。
db_app.setUp()
# self.app = create_app(Config)
# self.app_context = self.app.app_context()
# self.app_context.push()
# db.create_all()
# self.client = self.app.test_client()
# db.session.commit()
db_app.create_user('11123123123','user@gmail.com','123123123','client')
print(Client.query.all())
它带来了必要的结果:[<Client 2>]
我已经阅读了SQLAlchemy的不同来源和主要文档,但无法真正看到这种差异的来源。我想念什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。