I'm re-asking this question but with a different framework this time. I have two Models: User and Book with a M2M-relation. I want Book to have an attribute "read" that is True when the relation exists. Is this possible in SQLAlchemy?
+1
A:
Take a look at SQL Expressions as Mapped Attributes. Something like this should do the job for you:
Book.read = column_property(
select(
[func.count(user_to_book_table.c.user_id)],
user_to_book_table.c.book_id == book_table.c.id
).label('read')
)
Even though it is not Boolean, you can still use it in the IF statements correctly:
if mybook.read:
print 'very popular book indeed'
Alternatively you can just add a computed (read-only) property on the Book object, but this will load all the Users into your session:
@property
def read(self):
return len(self.books)!=0
van
2010-03-15 18:33:24
Thank you for the pointers
Timtim
2010-03-15 18:45:57