2010-03-15 109 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