我正在为我的应用程序使用 Flask 并收到 AttributeError: '_Option' object has no attribute '_sa_instance_state' 错误。不知道它是关于什么的。我谷歌了一下,似乎这是一个 SQL-Alchemy 问题。你能帮我吗?
这是我的模型.py:
#current table is used to make navigation hierarchy. eg. menu/submenu
#eg. About Us (History, Mission, Vision)
menu_hierarchy = db.Table('menu_hierarchy',
db.Column('parent_id', db.Integer, db.ForeignKey('menu.id')),
db.Column('child_id', db.Integer, db.ForeignKey('menu.id'))
)
class Menu(db.Model):
"""Menu is used for websites navigation titles.
eg. Home/About Us/Blog/Contacts/and etc"""
id = db.Column(db.Integer, primary_key = True)
title = db.Column(db.String(255))
title_eng = db.Column(db.String(255))
alias = db.Column(db.String(255))
menu_type = db.Column(db.String(10))
ordering = db.Column(db.SmallInteger, default = '1')
check_out_time = db.Column(db.DateTime)
access = db.Column(db.String(30))
published = db.Column(db.SmallInteger, default = '1')
parent_id = db.relationship('Menu',
secondary = menu_hierarchy,
primaryjoin = (menu_hierarchy.c.parent_id == id),
secondaryjoin = (menu_hierarchy.c.child_id == id),
backref = db.backref('menu_hierarchy', lazy = 'dynamic'),
lazy = 'dynamic')
content = db.Column(db.String)
content_eng = db.Column(db.String)
image = db.Column(db.String(350))
问题似乎与被解释为 ORM 对象的整数 (ID) 有关。
参见 this SO 帖子,其中包含相关代码示例。
检查您是否直接删除了
Model
实例的该字段。原理是,当您将对象传递给函数时,它是同一个对象,而不是它的副本,因此通过 del vars(object)[field]
删除属性会更改原始对象。请在更改之前使用 copy.deepcopy(object)
。