Closed tanyewei closed 8 years ago
model:
roles_users = db.Table('roles_users', db.Column('user_id', db.Integer(), db.ForeignKey('users.id')), db.Column('role_id', db.Integer(), db.ForeignKey('roles.id'))) #Base = declarative_base() # Role model for Flask-Security class Roles(db.Model, RoleMixin): #__tablename__ = 'roles' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) # User model for Flask-Security class Users(db.Model, UserMixin): #__tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) active = db.Column(db.Boolean()) username = db.Column(db.String(100), unique=True) confirmed_at = db.Column(db.DateTime) last_login_at = db.Column(db.DateTime) current_login_at = db.Column(db.DateTime) last_login_ip = db.Column(db.String(50)) current_login_ip = db.Column(db.String(50)) login_count = db.Column(db.Integer) roles = db.relationship('Roles', secondary=roles_users, backref=db.backref('users', lazy='dynamic')) orders = db.relationship('Orders', backref='users') class Orders(db.Model): #__tablename__ = 'order' order_id = db.Column(db.Integer, primary_key=True) #user_name = db.Column(db.String(30), nullable=False) order_date = db.Column(db.DateTime, nullable=False, default=datetime.now()) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) user = db.relationship(Users, backref='user_order') order_items = db.relationship("OrderItem", cascade="all, delete-orphan", backref='orders') items = association_proxy("order_items", "item") class Item(db.Model): #__tablename__ = 'item' item_id = db.Column(db.Integer, primary_key=True) description = db.Column(db.String(30), nullable=False) price = db.Column(db.Float, nullable=False) def __init__(self, description, price): self.description = description self.price = price def __repr__(self): return 'Item(%r, %r)' % ( self.description, self.price ) class OrderItem(db.Model): #__tablename__ = 'orderitem' order_id = db.Column(db.Integer, db.ForeignKey('orders.order_id'), primary_key=True) item_id = db.Column(db.Integer, db.ForeignKey('item.item_id'), primary_key=True) price = db.Column(db.Float, nullable=False) def __init__(self, item, price=None): self.item = item self.price = price or item.price item = db.relationship(Item, lazy='joined')
In [10]: a.order_items Out[10]: [<test.OrderItem at 0x7fe7be15c150>, <test.OrderItem at 0x7fe7be185690>, <test.OrderItem at 0x7fe7be185890>]
a.order_items[0].item.price
model:
In [10]: a.order_items Out[10]: [<test.OrderItem at 0x7fe7be15c150>, <test.OrderItem at 0x7fe7be185690>, <test.OrderItem at 0x7fe7be185890>]
a.order_items[0].item.price