2012-01-05 17 views

Respuesta

10

El argumento format se utiliza para determinar cómo se mostrarán los campos de otras tablas que hacen referencia a la tabla 'persona'. Por ejemplo, si se define:

db.define_table('dog', 
    Field('name'), 
    Field('owner', db.person) 

El campo 'propietario' es un campo de referencia que hace referencia a la tabla 'persona' (es decir, que las tiendas de discos de identificación de registros de la tabla 'persona'). En la mayoría de los casos, cuando visualiza datos de la tabla 'perro', no desea mostrar el ID de registro de db.person sin procesar que está almacenado en el campo 'propietario' porque eso no tiene ningún significado; en su lugar, tiene más sentido mostrar el 'nombre' de la persona. En web2py, el atributo format de la tabla habilita esta sustitución automática tanto en formularios como en tablas.

Cuando crea un SQLFORM basado en la tabla 'perro', generará automáticamente una lista desplegable para el campo 'propietario', y debido al argumento format='%(name)s' de la definición de la tabla 'persona', el drop- la lista desplegable mostrará los nombres de db.person en lugar de los id de registro (aunque a partir del envío del formulario, el campo "propietario" almacenará el id. de registro asociado en lugar del nombre).

Además, si visualiza registros de la tabla 'perro' en un SQLTABLE o SQLFORM.grid, el campo 'propietario' mostrará el nombre del propietario en lugar de la identificación del registro del propietario.

Ver http://web2py.com/books/default/chapter/29/6#Record-representation.

+0

Gracias. Lo que no entiendo aquí es qué significan este símbolo **% ** y el ** s ** al final del argumento – Jensen

+0

Eso es simplemente estándar [notación de formato de cadena de Python] (http://docs.python.org /library/stdtypes.html#string-formatting-operations). La cadena 'format' puede incluir los nombres de cualquier campo dentro de la tabla. – Anthony

+0

Muchas gracias. – Jensen

Cuestiones relacionadas