【发布时间】:2017-11-06 01:03:32
【问题描述】:
我正在尝试为我的数据库创建以下结构:
我有一个父类UserModel,其中ChefModel 和CustomerModel 作为孩子。一切正常,直到我尝试在 OrderModel 和两个类之间添加关系。在对UserModel 或ChefModel 的所有调用中,我收到以下错误。例如,当我尝试寻找厨师时:
File "C:\Users\Moham\Documents\Food order\resources\chef.py", line 60, in get
users = ChefModel.query.filter_by(active = True).all()
AttributeError: 'NoneType' object has no attribute 'filter_by'
这是我的 ChefModel:
class ChefModel(UserModel):
__tablename__ = 'chefs'
id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key = True)
food_items = db.relationship("FoodItemModel", backref="chef", lazy=True)
__mapper_args__ = {'polymorphic_identity':'chefs'}
客户模型:
class CustomerModel(UserModel):
__tablename__ = 'customers'
id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key = True)
__mapper_args__ = {'polymorphic_identity':'customers'}
和订单模型:
class OrderModel(db.Model):
__tablename__ = 'orders'
order_id = db.Column(db.Integer, primary_key = True)
updated_date = db.Column(db.DateTime, default=datetime.utcnow())
description = db.Column(db.String(254))
food_items = db.relationship("FoodItemModel", secondary = association_table)
customer_id = db.relationship(db.Integer, db.ForeignKey('customers.id')) //if remove this line
chef_id = db.relationship(db.Integer, db.ForeignKey('chefs.id')) //and this line, calls are normal
我做错了什么?
【问题讨论】:
-
也许问题出在过滤器上?试试
users = ChefModel.query.filter(ChefModel.active.is_(True)).all() -
UserModel基类是什么样的?
标签: python flask flask-sqlalchemy