2010-03-15 2 views
0

Я повторно задаю этот вопрос, но с другой структурой на этот раз. У меня две модели: пользователь и книга с отношением M2M. Я хочу, чтобы у Книги был атрибут «read», который является True, когда существует отношение. Возможно ли это в SQLAlchemy?От многих до многих отношение SQLAlchemy (имеет отношение атрибут exsist)

ответ

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

Несмотря на то, что не Boolean, вы можете использовать его в отчетности, если правильно:

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

В качестве альтернативы вы можете просто добавить вычисленная (только для чтения) на объекте Book, но это загрузит всех пользователей на ваш сеанс:

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

Спасибо за указатели – Timtim

Смежные вопросы