Tengo un modelo con un campo is_deleted, ahora quiero que todas las formas de consulta para este modelo siempre se filtren por is_deleted = False, además de los argumentos de filtrado pasados a .filter y .filter_by.SQLAlchemy filtro predeterminado
En Django, normalmente anularía el administrador y agregaría mi propio filtro, pero necesito ayuda para SQLAlchemy.
ACTUALIZACIÓN:
terminé arriba haciendo lo siguiente:
class CustomQuery(Query):
def __new__(cls, *args, **kwargs):
if args and hasattr(args[0][0], "is_deleted"):
return Query(*args, **kwargs).filter_by(is_deleted=False)
else:
return object.__new__(cls)
session = scoped_session(sessionmaker(query_cls=CustomQuery))
Funciona, pero si tengo más campos más adelante me imagino que tendré que añadir más condiciones, no debe ser una forma de hacer esto en el nivel de modelo.
¿Qué quiere decir exactamente "el nivel del modelo"? ¿Puedes ilustrar un ejemplo de cómo te gustaría que se vea? – zzzeek