2010-03-11 9 views

Respuesta

45

Para Django < 1.10:

model._meta.get_field_by_name('location_x')[0].verbose_name 
+0

obtengo ' 'str' objeto no tiene atributo '_meta'' error. Django 1.7. –

+3

@MikhailBatcer: No sé cómo decirte esto, pero ... las cadenas no tienen campos. –

+0

Bueno, es un objeto modelo que se pasa en su fragmento, y no en cadena, ¿no es así? –

7
model._meta.get_field_by_name('location_x')[0].verbose_name 
12

model._meta.get_field('location_x').verbose_name

12

La respuesta seleccionada da un objeto proxy que puede lucir de la siguiente manera.

<django.utils.functional.__proxy__ object at 0x{SomeMemoryLocation}> 

Si alguien está viendo la misma, se encuentra la cadena para el nombre descriptivo de la función miembro título() del objeto proxy.

model._meta.get_field_by_name(header)[0].verbose_name.title() 

Una mejor manera de escribir esto sería:.

model._meta.get_field(header).verbose_name.title() 

donde header será el nombre del campo que interesa es decir, 'ubicación-x' en el contexto de los programas operativos.

NOTA: Los desarrolladores de Django también sienten que el uso de get_field es mejor y por lo tanto han depreciado get_field_by_name en Django 1.10. Por lo tanto, sugeriría usar get_field sin importar la versión de Django que use.

0

Para Django 1.11 y 2.0:

MyModel._meta.get_field('my_field_name').verbose_name 

Más información en la Django doc

Cuestiones relacionadas