Estoy usando SQLAlchemy 0.5rc, y me gustaría agregar un filtro automático a una relación, de modo que cada vez que intente obtener registros para esa relación, ignore los "remotos" si están marcados como "logically_deleted" (un campo booleano de la tabla secundaria)¿Cómo agregar un filtro automático a una relación con SQLAlchemy?
Por ejemplo, si un objeto "primario" tiene una relación "secundarios" que tiene 3 registros, pero uno de ellos se elimina lógicamente, cuando consulto " Padre "Me gustaría que SQLA llene el objeto primario con solo dos hijos.
¿Cómo debo hacerlo? Al agregar una condición "y" al parámetro primaryjoin de la relación? (Por ejemplo, "Children.parent_id == Parent.id and Children.logically_deleted == False
", pero ¿es correcto escribir "y" de esta manera?)
Editar:
logré hacerlo de esta manera
children = relation("Children", primaryjoin=and_(id == Children.parent_id, Children.logically_deleted==False))
pero hay una manera de para usar una cadena como primaryjoin en su lugar?
¿Se puede traducir esto utilizando __mapper_args__? Quiero decir que estoy usando declarativo. – Marconi
Intenté usarlo en mapper_args, pero recibí un mensaje de error que decía "mapper() obtuvo varios valores para el argumento de palabra clave 'local_table'". Entonces me temo que es inútil. –