Je pose de nouveau cette question mais avec un cadre différent cette fois. J'ai deux modèles: Utilisateur et Livre avec une relation M2M. Je veux que Book ait un attribut "read" qui soit True quand la relation existe. Est-ce possible dans SQLAlchemy?Beaucoup à plusieurs relation SQLAlchemy (fait l'attribut exsist de relation)
0
A
Répondre
1
Jetez un oeil à SQL Expressions as Mapped Attributes. Quelque chose comme cela devrait faire le travail pour vous:
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')
)
Même si ce n'est pas booléenne, vous pouvez toujours l'utiliser dans les instructions IF correctement:
if mybook.read:
print 'very popular book indeed'
Sinon, vous pouvez simplement ajouter un ordinateur (lecture seule) propriété sur l'objet livre, mais cela va charger tous les utilisateurs dans votre session:
@property
def read(self):
return len(self.books)!=0
Merci pour les pointeurs – Timtim