Отношение ко многим к SQLAlchemy (имеет отношение атрибут exsist) - PullRequest
0 голосов
/ 15 марта 2010

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

1 Ответ

1 голос
/ 15 марта 2010

Взгляните на выражения SQL в качестве сопоставленных атрибутов . Что-то вроде этого должно сделать работу за вас:

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'

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

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