Я создаю приложение на python, в котором есть база данных с результатами разных футбольных матчей.
Я хочу, чтобы модель установила свое поле result
на основе значений полей home_score
и away_score
.
Я много работал с Django, но не в этот раз, так как это будет простое терминальное приложение. Если бы я был, я бы классифицировал метод save
с некоторым кодом из метода result
ниже.
Будучи новичком в SQLAlchemy, я предположил, что декоратор @hybrid_property
является хорошим прокси для того, чего я пытался достичь.
Однако, когда я запускаю свои юнит-тесты для этой модели, она не работает на следующей строке
elif self.home_score > self.away_score:
со следующей ошибкой:
TypeError: Boolean value of this clause is not defined
Я включил модель ниже, кто-нибудь знает, что я делаю не так?
class Match(Base):
__tablename__ = 'matches'
id = Column(Integer, primary_key=True)
date = Column(Date, nullable=False)
home_id = Column(Integer, ForeignKey('teams.id'))
home = relationship(
"Team", back_populates='home_matches', foreign_keys=[home_id]
)
away_id = Column(Integer, ForeignKey('teams.id'))
away = relationship(
"Team", back_populates='away_matches', foreign_keys=[away_id]
)
home_score = Column(Integer, nullable=False)
away_score = Column(Integer, nullable=False)
@hybrid_property
def result(self):
""" Set the match result, based on the team scores """
if self.home_score == self.away_score:
return 'draw'
elif self.home_score > self.away_score:
return 'home'
elif self.home_score < self.away_score:
return 'away'