Como utilizar Django ChoiceField



Algunas veces el campo ChoiceField puede ser muy util en nuestros modelos, un ejemplo típico para esto es cuando necesitas diferentes tipos de usuario en tu aplicación de Django.

Si necesitas añadir este tipo de opciones limitadas para un tipo de usuario ('admin', 'blog_manager', 'traductor', 'normal'...)podriamos utilizar ChoiceField, en este ejemplo veremos como:

PROFILE_ROLE_CHOICES = (
    ('admin', _('Administrador')),
    ('b_manager', _('Administrador del Blog')),
    ('trans', _('Traductor')),
    ('normal', _('Usuario normal')),
)

class Profile(model.Model)
    user = models.OneToOneField(User)    
    user_type = models.CharField(max_length=10, choices=USERTYPE_CHOICES, default='normal', verbose_name=_('tipo de usuario'))
    #  etc...

Las lineas mas iportantes del código son la definición de las opciones (encima de la clase) y la definición del campo user_type.

Ahora veremos algunos ejemplos para saber como utilizar este campo:

# Creando un Perfil sin especificar el user_type (Para que coja el valor por defecto)
user = User.objects.all()[0]
new_profile = Profile(user=user)
new_profile.save()

print new_profile.user_type
Output: 'normal'

user_type se definió con un valor por defecto, si nosotros no le especificamos valor para este campo, utilizará 'normal' como tipo de usuario por defecto.

Para configurar manualmente el tipo de usuario, simplemente le pasamos el string que deseemos como vemos aquí:

# Creando Perfil especificando el user_type
user = User.objects.all()[0]
new_profile = Profile(user=user, user_type='b_manager')
new_profile.save()

print new_profile.user_type
Output: 'b_manager'

Si tienes cualquier pregunta no dudes en comentar !

Dejar un comentario

Tienes que esperar para comentar otra vez. Tiempo de espera: