urls template python django django-models views

python - template - django views urls



Django: Accede a las tuplas del campo dado. (2)

Esto es bastante bueno para importar su asignación de FILE_STATUS_CHOICES de los modelos y usarla para obtener Pending por P :

from my_app.models import FILE_STATUS_CHOICES print dict(FILE_STATUS_CHOICES).get(''P'')

get_FIELD_display() método get_FIELD_display() en su modelo está haciendo esencialmente lo mismo:

def _get_FIELD_display(self, field): value = getattr(self, field.attname) return force_text(dict(field.flatchoices).get(value, value), strings_only=True)

Y, dado que hay un campo de flatchoices en el campo del modelo, puede usarlo con la ayuda del _meta y get_field_by_name() :

choices = f._meta.get_field_by_name(''name'')[0].flatchoices print dict(choices).get(''P'')

donde f es tu instancia de modelo

Ver también:

Me gustaría obtener los valores nombrados de un campo de opciones para una opción que no está seleccionada actualmente. es posible?

Por ejemplo: modelos.py

FILE_STATUS_CHOICES = ( (''P'', ''Pending''), (''A'', ''Approved''), (''R'', ''Rejected''), ) class File(models.Model): status = models.CharField(max_length=1, default=''P'', choices=FILE_STATUS_CHOICES)

vistas.py

f = File() f.status = ''P'' f.save() old_value = f.status print f.get_status_display() > Pending f.status = ''A'' f.save() new_value = f.status print f.get_status_display() > Approved

¿Cómo puedo obtener el valor de visualización anterior de ''P'' a ''Pendiente''? Puedo hacerlo creando un formulario en la vista y accediendo a su diccionario de valores / etiquetas. ¿Es este el mejor / único enfoque?