как связать товар с его разнообразными цветными фотографиями в базе данных - PullRequest
0 голосов
/ 19 февраля 2019

вот текущая структура моей базы данных (я использую Flask-SQLAlchemy ):

class Product(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text, nullable=False)
    photos = db.relationship('ProductPhoto', backref='product', lazy=True)
    product_size_colors = db.relationship('ProductSizeColor', backref='product', lazy=True)

class Size(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    size = db.Column(db.String(5), nullable=False)  

class Color(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    color = db.Column(db.String(25), nullable=False) 

class ProductSizeColor(db.Model):
    __tablename__ = "product_size_color"
    id = db.Column(db.Integer, primary_key=True)
    product_id = db.Column(db.Integer, db.ForeignKey('product.id'), nullable=False)
    size_id = db.Column(db.Integer, db.ForeignKey('size.id'), nullable=False)
    color_id = db.Column(db.Integer, db.ForeignKey('color.id'), nullable=False)
    quantity = db.Column(db.Integer, nullable=False)

class ProductPhoto(db.Model):
    __tablename__ = "product_photo"
    id = db.Column(db.Integer, primary_key=True)
    product_id = db.Column(db.Integer, db.ForeignKey('product.id'), nullable=False)
    photo = db.Column(db.Text, nullable=False)

текущая база данных связывает фотографии продукта (ProductPhoto) с определеннойproduct (Product), если продукт представляет собой футболку трех цветов, как я могу настроить свою базу данных для определения цвета фотографии?

спасибо,

1 Ответ

0 голосов
/ 18 апреля 2019

Добавьте этот атрибут в свой класс ProductSizeColor:

color_rel = db.relationship ('Color', backref = 'product_sc')

И тогда вы сможете получить доступ к цвету вашего T-рубашка с помощью:

# instantiate for example some object
product = Product.query.filter_by(name='T-Shirt').first()

# access color of your T-shirt
color_t_shirt = product.product_color_size.color_rel.color
...