Oh, okay, got it! I added the following ColumnProperty to Game:
total_yards = ColumnProperty(lambda c:
select([Rushing.yards],
and_(Rushing.game_team_name==c.team_name,
Rushing.game_opponent_name==c.opponent_name)).as_scalar() +
select([Passing.yards],
and_(Passing.game_team_name==c.team_name,
Passing.game_opponent_name==c.opponent_name)).as_scalar())
This seems to be working! Thanks again for the fast reply :)
-Chris
On May 15, 3:15 am, Gaetan de Menten <[email protected]> wrote:
> On Sat, May 15, 2010 at 02:44, clane <[email protected]> wrote:
> > Hi all!
>
> > I'm building a database of football stats. I have the following setup
> > right now:
>
> > class Game(Entity):
> > using_options(tablename="games")
> > rushing = OneToOne("Rushing", inverse="game")
> > passing = OneToOne("Passing", inverse="game")
>
> > class Rushing(Entity):
> > using_options(tablename="rushing")
> > attempts = Field(Float)
> > yards = Field(Float)
> > game = ManyToOne("Game")
> > yards_per_attempt = ColumnProperty(lambda c: c.yards/c.attempts)
>
> > class Passing(Entity):
> > using_options(tablename="passing")
> > attempts = Field(Float)
> > yards = Field(Float)
> > game = ManyToOne("Game")
> > yards_per_attempt = ColumnProperty(lambda c: c.yards/c.attempts)
>
> > So, I'd like to add a ColumnProperty to Game that summed up rushing
> > and passing yards, something like,
>
> > total_yards = ColumnProperty(lambda c: c.rushing.yards +
> > c.passing.yards)
>
> > Obviously, the above code doesn't work, but I'm curious if there's a
> > way to do it? Now, I could just write a `total_yards' method on Game
> > that sums everything up, but I like the idea of having it
> > automatically calculated once the table is defined. I'm new to
> > SQLAlchemy and elixir, so I'm hoping I'm just missing something
> > obvious :)
>
> You need to embed a "select" expression for stuff like that to work.
>
> For an example,
> see:http://elixir.ematia.de/trac/browser/elixir/tags/0.7.1/tests/test_pro...
>
> --
> Gaëtan de Menten
>
> --
> You received this message because you are subscribed to the Google Groups
> "SQLElixir" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group
> athttp://groups.google.com/group/sqlelixir?hl=en.
--
You received this message because you are subscribed to the Google Groups
"SQLElixir" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlelixir?hl=en.