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_compatible
decorador tanto para Python 2 como para Python 3:También puede usar lo anterior en no
Model
objetos.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,str
esunicode
.fuente
Al agregar un
__str__()
método al modelo dePatient
esta manera:mostrará el nombre del paciente en lugar del objeto. Para obtener más detalles, consulte aquí
fuente