python - 修复 Flask 应用程序上的自关联关系上使用 association_proxy 时的 __init__() 错误
问题描述
我正在开发一个带有烧瓶的应用程序,该应用程序使用两个用户之间的自引用关联关系,但是当我尝试创建我得到的关联时,我无法让它工作,并且init () 错误说我向关联发送了 2 个参数刚添加时的代理 1。
我试图通过 Mychel 和 Simon 在https://groups.google.com/forum/#!topic/sqlalchemy/OeLrx74p5vY上发布的双重关联代理来实现自引用关联,并得到了有问题的错误,然后我尝试通过 SQLAlchemy 上发布的双重关系实现自引用关联,使用SingleNegationElimination 的关联配置与自我的多对多关系,并得到一个没有足够信息进行调试的 KeyError
class tutorship(db.Model):
__tablename__ = 'tutorship_tablename'
"""Reference table of tutors and students"""
id = db.Column(db.Integer, primary_key = True)
studentId = db.Column(db.Integer, db.ForeignKey('user.id'))
professorId = db.Column(db.Integer, db.ForeignKey('user.id'))
subject = db.Column(db.String(150), nullable = False)
date = db.Column(db.DateTime, nullable = False)
rating = db.Column(db.Float, nullable = True)
timeAgreed = db.Column(db.Float, nullable = False)
comments = db.Column(db.Text, nullable = True)
# Original try
student = db.relationship('User', primaryjoin=(studentId == User.id), backref='to_student')
professor = db.relationship('User', primaryjoin=(professorId == User.id), backref='from_professor')
class User(db.Model, UserMixin):
__tablename__='user'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(15), nullable=False)
surname = db.Column(db.String(20), nullable=False)
# Original try
tutors = association_proxy('to_student', 'professor')
students = association_proxy('from_professor', 'student')
# Second try
#students = db.relationship('tutorship', primaryjoin=(id == tutorship.studentId), backref='to_student')
#professors = db.relationship('tutorship', primaryjoin=(id == tutorship.professorId), backref='from_professor')
@app.route('/<professorId>/<studentId>/<subject>/<date>/<timeAgreed>')
def tutorshipConfirmed(professorId, studentId, subject, date, timeAgreed):
if (current_user.is_authenticated) and (str(current_user.id) == professorId):
student = User.query.filter_by(id = int(studentId)).first()
professor = User.query.filter_by(id = int(professorId)).first()
date = datetime.strptime(date, '%Y-%m-%d %H:%M:%S')
# Original try
student.tutors.append(professor)
# Second try
#student.professors.append(professor)
db.session.commit()
return redirect(url_for('home'))
我希望在两个用户之间创建一个自引用关联的实例,但在尝试时遇到了这些错误。
解决方案
推荐阅读
- swift - 如何在 Alamofire Swift 中调用具有 get api 等参数的 post API?
- machine-learning - 在卷积神经网络中设置学习率
- amazon-web-services - 需要什么 IAM 操作才能使用 ACL 上传到另一个账户的 S3 存储桶?
- firebase - 如何在动态链接中传递参数?
- python - Django Queryset 按不直接相关的模型字段排序
- asp.net-core-2.0 - 如何在 Visual Studio 2019 上使用 asp.NetCore 2.0.0
- unix - Bmon 遇到分段错误
- c - c语言在内存中存储数组的机制是什么
- javascript - 将子组件中的值检索回 LIstGroup 的父组件?
- go - 函数将自己称为 goroutine,这很危险吗?