2010-03-15 155 views

回答

1

看看SQL Expressions as Mapped Attributes。像這樣的東西應該爲你做的工作:

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') 
    ) 

即使它不是布爾,你仍然可以正確地使用它在IF語句:

if mybook.read: 
    print 'very popular book indeed' 

另外,您可以只需添加一個計算(只讀屬性),但會將所有用戶加載到會話中:

@property 
def read(self): 
    return len(self.books)!=0 
+0

謝謝指針 – Timtim 2010-03-15 18:45:57