一对多关系烧瓶

One to many relationship flask

我有 class 代表东西:

class Stuff(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    price = db.Column(db.Integer, nullable=False)
    name = db.Column(db.String(100), unique=True, nullable=False)
    logo = db.Column(db.Text)
    description = db.Column(db.Text)

    def __repr__(self):
        return '<Stuff %r>' % self.name

并且有 class 代表用户:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    name = db.Column(db.String(80), unique=False, nullable=False)
    cart = db.Column(db.Text)

    def __repr__(self):
        return '<User %r>' % self.name

这里的购物车是 json 字符串,例如“[Stuff_id_1”、“Stuff_id_2”]“
要添加新项目,我只需更改此字符串
示例:我需要从购物车中删除最后一项(“[[Stuff_id_1”,“Stuff_id_2”]”)。为此,我只需将字符串更改为“[Stuff_id_1”]”并编辑用户模型中的购​​物车列。 我知道我使用购物车栏的方式很愚蠢
如何建立一对多关系?

要建立这种关系 One-to-Many,您需要编辑 Stuff class 并将外键添加到 User table。

class Stuff(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    price = db.Column(db.Integer, nullable=False)
    name = db.Column(db.String(100), unique=True, nullable=False)
    logo = db.Column(db.Text)
    description = db.Column(db.Text)
    user_id = db.Column(db.ForeignKey('name_of_users_table.id'))
    user = relationship('User', backref='user_stuffs')

    def __repr__(self):
        return '<Stuff %r>' % self.name

现在你可以像这样使用关系:

user = User()
stuff = Stuff()

# Add to the relationship
user.user_stuffs.append(stuff)
db.session.commit()