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

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 como "Política: {{valor del campo" Nombre de política "de la política.}}.
Estaba pensando que __unicode__mi modelo Paciente manejó esto, pero parece que no. Se agradece cualquier ayuda.
django
django-models
django-admin
patrickn
fuente
fuente

__unicode__hace eso. Pegue su código para que podamos ver qué está mal__unicode__no funcionó para mí en Python 3. Sin embargo,__str__funcionó como se documenta en la respuesta a continuaciónRespuestas:
__unicode__hace eso. Tu modelo debería verse así:En Python 3 necesitas usar
__str__:fuente
El uso del
__str__método funciona en Python3 y Django1.8:fuente
La cadena que está viendo proviene del
__unicode__método, como otros han mencionado. Pero la cuestión 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__unicode__implementación después de que se guardó la entrada del registro, no verá nuevos títulos en elementos antiguos, solo después de realizar una nueva actividadfuente
Las respuestas que mencionan
__str__y los__unicode__métodos son correctos. Sin embargo, como se indica en los documentos , desde la versión 1.6 (creo), puede usar elpython_2_unicode_compatibledecorador tanto para Python 2 como para Python 3:También puede usar lo anterior en no
Modelobjetos.fuente
Debe definir qué columna desea mostrar ...
por ejemplo:
fuente
Tienes razón al pensar que eso
__unicode__hace eso. Tengo esto funcionando ahora mismo:Cuando miro en la lista de acciones recientes, veo el título de la película que acabo de editar.
fuente
Esto funcionaría, usando def str (self): que devuelve self.title
Usa algo como:
fuente
Dado que esta pregunta tiene 6 años, muchas cosas han cambiado. Permítanme hacer una actualización con python3.6 y la última versión de Django (2.1.2) que siempre debe usar
__str__()en el código nuevo.__unicode__()es una vieja historia para python2.7 porque en python3,stresunicode.fuente
Al agregar un
__str__()método al modelo dePatientesta manera:mostrará el nombre del paciente en lugar del objeto. Para obtener más detalles, consulte aquí
fuente