@property上的Python sqlalchemy和
我有以下多对多关系:@property上的Python sqlalchemy和,python,sqlalchemy,Python,Sqlalchemy,我有以下多对多关系: class UserSupportProject(Base): __tablename__ = 'usersupportprojects' user_id_supports = Column(Integer, ForeignKey('users.id'), primary_key=True) user_id_project = Column(Integer, ForeignKey('users.id'), primary_key=True)
class UserSupportProject(Base):
__tablename__ = 'usersupportprojects'
user_id_supports = Column(Integer, ForeignKey('users.id'), primary_key=True)
user_id_project = Column(Integer, ForeignKey('users.id'), primary_key=True)
project_tier = Column(Integer, nullable=False)
date_added = Column(DateTime, nullable=False)
review = Column(Text, nullable=True)
@property
def get_project_tier(self):
return object_session(self).query(ProjectTier).filter(ProjectTier.id == self.project_tier).first()
现在,我需要返回某个用户的project\u tier
值的总和user\u id\u project
project\u tier
仅供参考。它是ID
我可以使用属性get\u project\u tier
获取数据,例如tier\u worth
例如,在这里我可以看到用户的所有号码:
star = User.query.filter_by(id=star_id).first()
for tier in star.user_gets_support:
print (tier.get_project_tier.tier_worth)
我测试了我的求和代码是否有效,它是否有效。我可以计算项目层的总和
:
UserSupportProject.query.with_entities(func.sum(UserSupportProject.project_tier)).filter(UserSupportProject.user_id_project == star.id).scalar()
但它不适用于实际的层价值
:
UserSupportProject.query.with_entities(func.sum(UserSupportProject.get_project_tier.tier_worth)).filter(UserSupportProject.user_id_project == star.id).scalar()
它给出的错误是:
AttributeError: 'property' object has no attribute 'tier_worth'
属性仅适用于实例。您必须实例化类UserSupportProject或将属性更改为函数。属性仅适用于实例,您尝试从类访问它为什么不同时创建
project\u层
aForeignKey
?另外,您的user\u id\u supports
和user\u id\u project
字段看起来有误,可能需要再次检查文档。user\u id\u supports
和user\u id\u project
有什么问题?