我正在用炼金术建立一个用户友谊机制。我想要一个“boss-employee relationship”对象,这样它就可以有一些其他属性,比如日期、昵称等等,并维护员工的工作树
我意识到实现这一点的最佳方法是使用关联对象连接到用户模型的自引用多对多关系。这些模型似乎有效,但我似乎无法实际使用它们添加数据
有人能告诉我怎么修理这个吗?谢谢大家!
这就是我在解释器中运行以添加关系的内容,每次它都会崩溃:
from questionary import create_app
app = create_app()
app.app_context().push()
from questionary import db
db.create_all()
from questionary.models import *
s, m = User.query.all()[0], User.query.all()[-1]
r = RelationshipObject(slave=s, master=m)
db.session.add(r)
db.session.commit()
错误如下:
ProgrammingError Traceback (most recent call last)
d:\project\venv\lib\site-packages\sqlalchemy\engine\base.py in _execute_context(self, dialect, constructor, statement, parameters, *args)
1247 self.dialect.do_execute(
-> 1248 cursor, statement, parameters, context
1249 )
d:\project\venv\lib\site-packages\sqlalchemy\engine\default.py in do_execute(self, cursor, statement, parameters, context)
589 def do_execute(self, cursor, statement, parameters, context=None):
--> 590 cursor.execute(statement, parameters)
591
ProgrammingError: can't adapt type 'User'
The above exception was the direct cause of the following exception:
(...long recursion error traceback here...)
d:\project\venv\lib\site-packages\sqlalchemy\engine\default.py in do_execute(self, cursor, statement, parameters, context)
588
589 def do_execute(self, cursor, statement, parameters, context=None):
--> 590 cursor.execute(statement, parameters)
591
592 def do_execute_no_params(self, cursor, statement, context=None):
<class 'str'>: (<class 'RecursionError'>, RecursionError('maximum recursion depth exceeded in __instancecheck__'))
这些是我的模型,我正在使用一个包结构的flask模型,并从树库运行
class RelationshipObject(db.Model):
id = db.Column(db.Integer, primary_key=True)
slave = db.Column(db.Integer, db.ForeignKey(
'user.id'), primary_key=True)
master = db.Column(db.Integer, db.ForeignKey(
'user.id'), primary_key=True)
relationship_time = db.Column(
db.DateTime, nullable=False, default=dt.utcnow)
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
slaves = db.relationship('RelationshipObject', backref='slaves',
primaryjoin=(id == RelationshipObject.slave))
masters = db.relationship('RelationshipObject', backref='masters',
primaryjoin=(id == RelationshipObject.master))
目前没有回答
相关问题 更多 >
编程相关推荐