2009-12-01 7 views

Respuesta

69

Person._meta.get_field('name').max_length le dará este valor. Pero tener que usar _meta sugiere que esto es algo que no deberías hacer en el uso normal.

Editar: como Carl señaló, esta denominación es engañosa y que parece bastante aceptable para usarlo: http://www.b-list.org/weblog/2007/nov/04/working-models/

+8

Buena respuesta, pero no estoy de acuerdo con el segundo comentario. El guión bajo enfrente de _meta es engañoso, IMO (y he visto a los desarrolladores centrales de Django estar de acuerdo, está en parte allí solo para evitar conflictos de nombres con campos de modelos). Usar _meta no es un mal olor, es bueno; significa que estás siendo SECO y no haciendo suposiciones injustificadas. –

+0

Carl: En realidad pareces estar de acuerdo con mi comentario, que solo observaba la convención de nomenclatura y la implicación que normalmente tendría. Sin embargo, tiene razón en que es engañoso: consulte http://www.b-list.org/weblog/2007/nov/04/working-models/, por ejemplo, –

+0

. Encontré este nombramiento molesto en el pasado, porque usted no se puede acceder a las variables con guiones bajos al principio en las plantillas de Django. Agregamos una nueva propiedad que apuntaba a _meta para evitar eso. –

2

La pregunta es con respecto a los modelos, pero para las personas tratando de hacer lo mismo para las formas (que es como terminé en este hilo), creo que este enfoque es bastante simple y claro:
1. en una plantilla:
{{form.name.field.max_length}}

2. en el código Python (por ejemplo, en la vista)
form.name.field.max_length

+2

? Desafortunadamente, la pregunta era sobre modelos, no sobre formularios. –

Cuestiones relacionadas