Django: display name

7 views
Skip to first unread message

Juancarlo Añez

unread,
Sep 2, 2015, 10:51:15 AM9/2/15
to python-venezuela

En mis requerimientos existe la entidad "Role", que coincide perfectamente "Group"de Django.

Pero en la aplicación debe decir "Role", y no "Group"!

Se que hay una manera (posiblemente un hack) para hacer que "Group" aparezca en todas partes como "Role" sin copiar el código de django.contrib.auth, pero no consigo la información en este momento.

Help?


--
Juancarlo Añez
tel:+58(414)901-2021
skype:juancarloanez

Tomas Henriquez

unread,
Sep 2, 2015, 11:44:04 AM9/2/15
to python-venezuela
Que tal Juancarlo,

"Group" es una clase en django que vive en el modulo "auth", para cambiarle el nombre lo unico que se me ocurre es que hagas un "translation"

Fijate que en el meta de la clase group usan el "ugettext_lazy" para darle el nombre:

from django.utils.translation import ugettext_lazy as _

class Group(models.Model):
    """
    Groups....
    """
    name = models.CharField(_('name'), max_length=80, unique=True)
    permissions = models.ManyToManyField(Permission,
        verbose_name=_('permissions'), blank=True)

    objects = GroupManager()

    class Meta:
        verbose_name = _('group')
        verbose_name_plural = _('groups')

Espero que esto te sirva, avisa si lo logras hacer hehe.

Saludos!



--
Este es un mensaje del foro Python de Venezuela - http://www.python.org.ve
Para suscripciones y retiros: http://goo.gl/ug9by
---
Has recibido este mensaje porque estás suscrito al grupo "Python Venezuela" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a python-venezue...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Luis Alberto Santana

unread,
Sep 2, 2015, 11:49:12 AM9/2/15
to python-v...@googlegroups.com
2015-09-02 11:13 GMT-04:30 Tomas Henriquez <nullw...@gmail.com>:
> Que tal Juancarlo,
>
> "Group" es una clase en django que vive en el modulo "auth", para cambiarle
> el nombre lo unico que se me ocurre es que hagas un "translation"
>
> Fijate que en el meta de la clase group usan el "ugettext_lazy" para darle
> el nombre:
>
> from django.utils.translation import ugettext_lazy as _
>
> class Group(models.Model):
> """
> Groups....
> """
> name = models.CharField(_('name'), max_length=80, unique=True)
> permissions = models.ManyToManyField(Permission,
> verbose_name=_('permissions'), blank=True)
>
> objects = GroupManager()
>
> class Meta:
> verbose_name = _('group')
> verbose_name_plural = _('groups')
>
> Espero que esto te sirva, avisa si lo logras hacer hehe.
>

Complementando un poco esto, se me ocurre que una manera más directa
sería haciendo una subclase de Group, y modificando el verbose_name y
verbose_name_plural de esa subclase.

Luego sacar del registro de admin "Group" y registrar tu subclase con:

admin.site.unregister(Group)
admin.site.register(NuevaClase)

Sin embargo hay que tener cuidado con esto. Este cambio deberías
hacerlo antes de hacer tu primer migrate, porque de otro modo no
existirán las tablas para esta nueva subclase. Esto también implica
que tu nueva clase no aparecerá bajo "Autenticación y Autorización"
sino que usará el app_label de la aplicación donde se hizo el registro
en el admin.

No es una solución óptima, y tiene algunos problemas.

Juancarlo Añez

unread,
Sep 2, 2015, 12:16:48 PM9/2/15
to python-venezuela
TomTom,

Atender el requerimiento a través de translation es una solución limpia, y de cero impacto sobre lo funcional.

Excelente!

Gracias! 

2015-09-02 11:13 GMT-04:30 Tomas Henriquez <nullw...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages