2012-04-21 7 views
13

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.

+0

¿Qué quiere decir exactamente "el nivel del modelo"? ¿Puedes ilustrar un ejemplo de cómo te gustaría que se vea? – zzzeek

Respuesta

Cuestiones relacionadas