python - 在 SQLAlchemy 中引用连接对象属性
问题描述
我有一个包含用户、技能和技能尝试的数据库。我正在尝试找到一种更好的方法来计算用户的平均尝试分数,而无需将用户对象传递回该方法。
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
assessments = db.relationship("SkillAttempt")
class SkillAttempt(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey("user.id")
skill_id = db.Column(db.Integer, db.ForeignKey("skill.id")
score = db.Column(db.Integer)
class Skill(db.Model):
id = db.Column(db.Integer, primary_key=True)
canvas_id = db.Column(db.Integer, unique=True)
name = db.Column(db.String(255))
attempts = db.relationship(
"SkillAttempt",
lazy="dynamic"
)
def __get_scores(self, user):
return [
item.score for item in self.attempts.filter(OutcomeAttempt.user_id == user.id).all()
]
def average(self, user):
scores = self.__get_scores(user)
return sum(scores) / len(scores)
现在,我得到一个用户的分数是这样的:
user = User.query.get(1)
user.assessments[0].skill.highest(u)
是否有更好的查询方法,以便在过滤器中隐式引用用户对象?
解决方案
推荐阅读
- amazon-web-services - 如何从 AWS S3 上的拒绝访问错误中恢复?
- python - 绘制大量数据的建议
- xcode - Xcode。自定义打开快速搜索文件夹
- python - Mandrill 模板不在数组上循环
- c# - 如何从另一个表单调用方法?
- python - 如何识别字典中的匹配值并仅使用这些键创建一个新字符串?
- ios - WKWebView 显示白屏,与原生<->webview 通信
- node.js - 带有 Nodejs 的 Docker 容器 mongodb
- javascript - 在Javascript中将字符串转换为大整数?
- bash - 使用非系统依赖的 bash shebang(而不是 #!/bin/bash)在任何地方都可以使用?