Buenas, mi consulta viene a raiz de que no se me ocurre como armar esta consulta. Tengo en parte este modelo:
############-CIRUGIA-####################################################################################################
db.define_table("cirugia",
Field("id_sucursal", "reference sucursal", notnull=True, label="Sucursal"),
Field("id_servicio", "reference servicio_medico", notnull=True, label="Servicio Medico"),
Field("id_material", "reference material", label="Material"),
Field("fecha", "datetime", default=None, label="Fecha Cirugia"),
Field("cirugia_gesem", "string", length=10, default=None))
db.cirugia.id_sucursal.requires = IS_IN_DB(db, '
sucursal.id','%(sucursal)s', zero=T('Elige una Sucursal'))
db.cirugia.id_servicio.requires = IS_IN_DB(db, '
servicio_medico.id','%(denominacion)s', zero=T('Elige un Servicio Medico'))
db.cirugia.id_material.requires = IS_IN_DB(db, '
material.id','%(denominacion)s', zero=T('Elige un Material'))
#########################################################################################################################
############-CIRUGIA ESTADOS-############################################################################################
db.define_table("cirugia_estado",
Field("id_estado", "reference estados"),
Field("id_cirugia", "reference cirugia"),
Field("id_usuario", "reference auth_user"),
Field("fecha_creacion", "datetime", notnull=True),
Field("observaciones", "text", default=None, widget=ckeditor.widget))
#########################################################################################################################
############-CIRUGIA ENTIDAD-############################################################################################
db.define_table("cirugia_entidad",
Field("id_cirugia", "reference cirugia"),
Field("id_rol", "reference roles"),
Field("id_entidad", "reference entidad"))
db.cirugia_entidad.id_cirugia.requires = IS_IN_DB(db, '
cirugia.id')
db.cirugia_entidad.id_rol.requires = IS_IN_DB(db, '
roles.id')
db.cirugia_entidad.id_entidad.requires = IS_IN_DB(db, '
entidad.id')
#########################################################################################################################
En un controlador mi idea es gestionar las "cirugías" con un grid de la siguiente manera:
@auth.requires_login()
def cirugias():
campos = [db.cirugia.id_sucursal, db.cirugia.id_servicio, db.cirugia.id_material, db.cirugia.fecha, db.cirugia_estado.id_estado]
form = SQLFORM.grid(db.cirugia,left=db.cirugia_estado.on(db.cirugia_estado.id_estado==
db.cirugia.id), fields=campos, create=False)
return dict(form=form)
Hasta acá todo perfecto. Solo me resta "enlazar" con la tabla cirugia_entidad. Y aca, si bien lo hice me quedo una fila por cada registro de esa tabla asociada a la cirugia. En cambio yo lo quiero ver como columnas. Hoy lo veo asi:
SUCURSAL | SERVICIO MEDICO | MATERIAL | FECHA CIRUGIA | ESTADO |
Y mi idea es verlo así:
SUCURSAL | SERVICIO MEDICO | MATERIAL | FECHA CIRUGIA | ESTADO | ID ROL1 | ID ROL2 | ID ROL3 | ID ROL4
Espero haberme explicado.