2012-08-13 19 views
6

Quiero anular el valor que se muestra para un campo en el administrador de Django. El campo contiene XML y cuando lo veo en el administrador, quiero formatearlo bastante para facilitar la lectura. Sé cómo reformatear en lectura y escritura del campo en sí, pero esto no es lo que quiero hacer. Quiero que el XML se almacene con espacio en blanco y solo quiero volver a formatearlo cuando se lo vea en el formulario de cambio de administrador.Cómo anular la visualización del valor del campo en el formulario de cambio de administrador de Django

Así que mi pregunta es, ¿cómo puedo controlar el valor que se muestra en el área de texto del formulario de cambio de administrador para este campo?

+0

¿Estás hablando sólo de espaciado e indentación, ¿o realmente cambiar estilos como color, tamaño, etc.? Esto último no es posible. –

+0

Es lo primero en lo que estoy interesado. Solo quiero reemplazar el valor que se muestra en el área de texto con un valor diferente. – gbutler

Respuesta

13
class MyModelForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(MyModelForm, self).__init__(*args, **kwargs) 
     self.initial['some_field'] = some_encoding_method(self.instance.some_field) 

class MyModelAdmin(admin.ModelAdmin): 
    form = MyModelForm 
    ... 

Cuando, some_encoding_method habría algo que haya configurado para determinar el espaciamiento/indentación o alguna otra funcionalidad 3 ª parte que tome prestado sucesivamente. Sin embargo, si usted escribe su propio método, sería mejor ponerlo en el modelo, sí, y luego llamar a través de la instancia:

class MyModel(models.Model): 
    ... 
    def encode_some_field(self): 
     # do something with self.some_field 
     return encoded_some_field 

continuación:

self.instance.encode_some_field() 
+1

Eso hizo el truco. ¡Gracias! – gbutler

Cuestiones relacionadas