2017-11-05 9 views
0

を追加するときに「NoneType」オブジェクトがエラー「filter_by」は属性を持っていない私は自分のDBについては、以下の構造を作成しようとしています:フラスコSQLAlchemyの:関係

私はChefModelや子供などCustomerModelで親クラスUserModelを持っています。私がOrderModelと両方のクラスの間に関係を追加しようとするまで、すべてうまくいきます。 UserModelまたは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'} 

CustomerModel:

class CustomerModel(UserModel): 
    __tablename__ = 'customers' 
    id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key = True) 
    __mapper_args__ = {'polymorphic_identity':'customers'} 

そしてOrderModel:ここ

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 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 

何私は間違っている?

+0

おそらく問題はフィルタにありますか? 'users = ChefModel.query.filter(ChefModel.active.is_(True))。all()' – Arunmozhi

+1

'UserModel'基本クラスはどのように見えますか? – bow

答えて

1

OrderModelのcustomer_id列とchef_id列を間違って指定したと思います。次のようなことを試してください:

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)) 
    customer_id = db.Column(db.Integer, db.ForeignKey("customers.id")) 
    chef_id = db.Column(db.Integer, db.ForeignKey("chefs.id")) 
+0

どのような愚かな間違い:) –

関連する問題