Si un modelo Django contiene un campo de clave externa, y si ese campo se muestra en el modo de lista, a continuación, se muestra como texto, en lugar de mostrar un enlace que el objeto extraño .claves externas de visualización de la lista Django administrador
¿Es posible mostrar automáticamente todas las claves externas como enlaces en lugar de texto plano?
(por supuesto que es posible hacer eso en un campo por campo, pero ¿hay un método general?)
Ejemplo:
class Author(models.Model):
...
class Post(models.Model):
author = models.ForeignKey(Author)
Ahora elija un ModelAdmin tal que el autor se muestra en modo de lista:
class PostAdmin(admin.ModelAdmin):
list_display = [..., 'author',...]
Ahora en modo de lista, el campo de autor sólo se utilizan el método __unicode__
de la clase Author
para mostrar el autor. Además de eso, quisiera un enlace apuntando a la url del autor correspondiente en el sitio de administración. ¿Es eso posible?
Método manual:
En aras de la exhaustividad, añadir el método manual. Sería añadir un método author_link
en la clase PostAdmin
:
def author_link(self, item):
return '<a href="../some/path/%d">%s</a>' % (item.id, unicode(item))
author_link.allow_tags = True
que funcionará para ese campo en particular, sino que es no lo que quiero. Quiero un método general para lograr el mismo efecto. (Uno de los problemas es cómo descubrir automáticamente la ruta a un objeto en el sitio de administración de django.)
Gracias por esta respuesta! ¿Podría explicar el uso de inlines? ¿Cómo ayudaría eso? –
@Olivier: Edité mi respuesta para indicarle la dirección correcta con respecto a las líneas. – cethegeek