AttributeError:'str'对象没有属性'_sa_instance_state'-Flask SqlAlchemy

时间:2019-07-26 08:41:06

标签: python flask sqlalchemy flask-sqlalchemy

在将我的值附加到关联表时遇到麻烦。从那以后我再也没有解决这个问题。我不知道这是关系或其他问题的问题。

这是我的association table

item_tags_association_table = db.Table('item_tags_associations', db.Model.metadata,
            db.Column('item_id', db.Integer, db.ForeignKey('items.id')),
            db.Column('tag_id', db.Integer, db.ForeignKey('tags.id')))

这是我的Item模型

class Item(db.Model):
    # 1. Set the table name in plural form
    __tablename__ = 'items'
    # 2. Implemantation Attributes()
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80),nullable=False)
    description = db.Column(db.Text,nullable=False)
    quantity = db.Column(db.Integer,nullable=False)
    price = db.Column(db.Integer,nullable=False)
    avatar_url = db.Column(db.String(500))
    bio = db.Column(db.String(240))
    #2019/07/23
    category_id = db.Column(db.Integer, db.ForeignKey('categories.id'))
    category = db.relationship("Category", back_populates="items")
    tags = db.relationship("Tag", secondary=item_tags_association_table,
                            back_populates="items")

这是我的功能,也可以处理实际上在Item类内部的追加。

def insert_tags(self, tag_list):
    for tag in tag_list:
        self.tags.append(tag)

这是Tag模型

class Tag(db.Model):
    __tablename__='tags'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80),nullable=False)
    items = db.relationship("Item",
                            secondary=item_tags_association_table,
                            back_populates="tags")

1 个答案:

答案 0 :(得分:0)

更新:我自己回答了这个问题,所以问题是我试图附加主键而不是附加对象本身。因此,在我的views.py中,我创建了一个对象,该对象使用输入传递的主键来获取数据。