evitar el select obligatorio

55 views
Skip to first unread message

emp2web

unread,
Jan 15, 2015, 11:08:04 PM1/15/15
to web2py-...@googlegroups.com
Saludos,

Antes que nada agradezo todos los aportes,

Probablemente sea algo muy básico pero me encuentro perdido con el tema, tengo en el modelo 2 tablas ejemplo:

db.define_table("grupo", Field('grupo'), format='%(grupo)s')
db.define_table("tipos", Field('grupo','reference grupo'), Field('tipo'))

Al momento de generar la vista y agregar un {{=SQLFORM.grid(db.tipos)}} cuando voy a crear un nuevo tipo necesito que el campo grupo no sea obligatorio pero no he logrado identificar como hacerlo ya que siempre me queda obligatorio.

Gracias,

Quedo atento.

isi_jca

unread,
Jan 16, 2015, 11:00:21 AM1/16/15
to web2py-...@googlegroups.com
Hola!

En la definición de la tabla tipos has creado una referencia hacia la tabla grupo y al momento de cargar en tipos web2py creará automaticamente una dropdown o lista desplegable con los valores existentes en la tabla grupo, por lo que la misma debe estar poblada con al menos un valor. Supongamos que defines la tabla de la siguiente manera:

db.define_table("tipos", Field('grupo','reference grupo', default = 1), Field('tipo'))

En la tabla grupo el valor para el id=1, podría contener la descripción "Sin grupo", entonces por defecto todo nuevo registro en tipos tendra el valor 1 para grupo.

Saludos cordiales.

emp2web

unread,
Jan 17, 2015, 7:23:33 PM1/17/15
to web2py-...@googlegroups.com
Saludos,

Gracias por tu respuesta, es una solución pero no es la que busco, lo que realmente quiero es saber como quito la validación no como le doy un valor por defecto,

Igualmente mil gracias, por tu colaboración.

isi_jca

unread,
Jan 18, 2015, 9:19:58 AM1/18/15
to web2py-...@googlegroups.com
Hola!

La columna grupo en la tabla tipos es una clave foranea y la misma no puede ser nula. Ningún tipo de clave, (foranea o principal) puede ser nula. Ten en cuenta que la clave foranea apunta a la clave principal de una tabla, y por definición las claves deben tener valores únicos y no nulos (integridad referencial).

Saludos cordiales.

emp2web

unread,
Jan 18, 2015, 12:21:34 PM1/18/15
to web2py-...@googlegroups.com
Saludos, tienes toda la razón en el tema de la integridad relacional, entonces voy a replantear la pregunta como elimino la integridad referencial sin perder las propiedades que me brinda el web2py y que el campo no sea obligatorio?

Gracias,

Quedo atento.

isi_jca

unread,
Jan 19, 2015, 6:53:52 AM1/19/15
to web2py-...@googlegroups.com
¡Hola!

Para crear la tabla tipos sin tener la integridad referencial y que la columna grupo acepte valores nulos:
 
db.define_table("tipos",
Field('grupo','integer',label = "Cód. de Grupo."),
Field('tipo','integer',label = "Tipo."))



Saludos.

Federico Ferraro

unread,
Jan 19, 2015, 7:13:47 AM1/19/15
to web2py-...@googlegroups.com
Probaste de poner : 

tipos.grupo en None 





--
Has recibido este mensaje porque estás suscrito al grupo "web2py-usuarios" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a web2py-usuari...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
--
Federico Ferraro
Usuario Linux : 482533.
--

Federico Ferraro

unread,
Jan 19, 2015, 7:54:15 AM1/19/15
to web2py-...@googlegroups.com
Cambiando el validador por defecto tendría que funcionar : 

db.tipos.grupo.requires=IS_EMPTY_OR(IS_IN_DB(db,'grupo.id','%(grupo)s'))) 

Slds ... 

emp2web

unread,
Jan 28, 2015, 12:41:18 AM1/28/15
to web2py-...@googlegroups.com
Gracias a todos por la información
Reply all
Reply to author
Forward
0 new messages