theme template personalizar password filter_horizontal bootstrap django django-models django-admin

template - La personalización de la pantalla Django "Objeto xxxxxx" en la barra lateral de la acción de administrador



django-admin command (6)

Me gustaría cambiar el comportamiento predeterminado de cómo la barra lateral de cambios recientes de administrador muestra el nombre de los "objetos" agregados. Consulte la imagen a continuación:

Me gustaría cambiar la forma en que se nombran en el Administrador. Idealmente, me gustaría poder cambiarlo de "objeto MyModelName" a, como en el ejemplo del objeto "Política", algo así como "Política: {{valor del campo" Nombre de la política "de la política.}}.

Estaba pensando que __unicode__ para mi modelo de paciente manejó esto, pero parece que no. Cualquier asistencia es apreciada.


El uso del método __str__ funciona en Python3 y Django1.8:

class MyModel(models.Model): name = models.CharField(max_length=60) def __str__(self): return ''MyModel: {}''.format(self.name)


Estás en lo cierto al pensar que __unicode__ hace eso. Tengo esto funcionando ahora mismo:

class Film(models.Model): title = models.CharField(max_length=200) ... def __unicode__(self): return self.title

Cuando miro en la lista de acciones recientes, veo el título de la película que acabo de editar.


La cadena que estás viendo proviene del método __unicode__ , como han mencionado otros. Pero el hecho es que el administrador guarda la representación de cadena de un objeto cuando crea un evento de registro, por lo tanto, si agrega la implementación __unicode__ después de guardar la entrada del registro, no verá títulos nuevos en elementos antiguos, solo después de realizar alguna actividad nueva


Las respuestas que mencionan los métodos __str__ y __unicode__ son correctas. Como se indica en los docs , sin embargo, desde la versión 1.6 (creo), puede utilizar el decorador python_2_unicode_compatible para Python 2 y Python 3:

from __future__ import unicode_literals from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible class MyClass(models.Model): def __str__(self): return "Instance of my class"

También puede usar lo anterior en objetos que no sean del Model .


Necesita definir qué columna quiere mostrar ...

por ejemplo:

class POAdmin(admin.ModelAdmin): list_display = (''qty'', ''cost'', ''total'')


__unicode__ hace eso. Tu modelo debería verse más o menos así:

class SomeModel(models.Model): def __unicode__(self): return ''Policy: '' + self.name

En Python 3 necesitas usar __str__ :

def __str__(self): return ''Policy: '' + self.name