sqlalchemy-filters icon indicating copy to clipboard operation
sqlalchemy-filters copied to clipboard

Filter joined table

Open mateo2181 opened this issue 4 years ago • 0 comments

Hola Julio, primero que nada muchas gracias por el package, estoy creando una Api Rest con flask y me está siendo super util. Te queria consultar un problema que estoy teniendo al filtrar un modelo relacionado a otro modelo, es una relación de uno a muchos que tengo entre pacientes y consultas, y quiero obtener, por ejemplo, un paciente con todas sus consultas menos una (que seria la del id 11) pero no está funcionando, solo funciona el filtro en el modelo Paciente:

def get_paciente_filtering_consultas(id):
    query = db.session.query(Paciente)
    filter_spec = [
        {'model': 'Paciente', 'field': 'id', 'op': '==', 'value': id},
        {'model': 'PacienteConsulta', 'field': 'id', 'op': '!=', 'value': 11},
    ]
    filtered_query = apply_filters(query, filter_spec)
    return filtered_query.first()

la relación en el modelo Paciente está definida de la siguiente forma:

class Paciente(db.Model):
    """ Paciente Model """
    __tablename__ = "paciente"
    consultas = db.relationship('PacienteConsulta', lazy='joined',order_by="desc(PacienteConsulta.created_at)")

El filtro del id es solo de prueba, en realidad mi idea es filtrar consultas por fecha, pero al probar esto me di cuenta que tampoco funcionaba.

Muchas gracias!

mateo2181 avatar Jun 16 '20 15:06 mateo2181