2010-03-11 26 views

risposta

45

per Django < 1.10:

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

ottengo ' 'str' oggetto non ha attributo '_meta'' errore. Django 1.7. –

+3

@MikhailBatcer: Non so come spezzarlo, ma ... le stringhe non hanno campi. –

+0

Bene, è un oggetto modello che viene passato nel tuo snippet e non una stringa, non è vero? –

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

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

12

La risposta selezionato dà un oggetto proxy che potrebbe apparire come di seguito.

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

Se qualcuno sta vedendo la stessa, è possibile trovare la stringa per il nome verbose nella funzione membro titolo() dell'oggetto proxy.

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

Un modo migliore per scrivere questo potrebbe essere:.

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

dove header sarà il nome del campo che ti interessa cioè, 'location-x' nel contesto PO.

NOTA: Gli sviluppatori di Django si sentono anche che l'uso get_field è migliore e quindi sono ammortizzati get_field_by_name in Django 1.10. Quindi suggerirei di usare get_field indipendentemente dalla versione di Django che usi.

0

Per Django 1.11 e 2.0:

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

Maggiori informazioni nel Django doc

Problemi correlati