[Django-es] Cambiar widgets en un formulario a partir de un model

947 views
Skip to first unread message

Nekmo

unread,
Apr 18, 2011, 6:23:03 PM4/18/11
to djan...@googlegroups.com
Muy buenas.

Llevo varias horas mirando la documentación de Django, pero tras todo
este tiempo, sigo sin entender bien cómo se deben definir los widgets
en un formulario a partir de un modelo, para, por ejemplo, usar Input
Radio en vez de un Select en un ForeignKey o en una de opciones en un
CharField. Me gustaría a ser posible que alguien me mostrase un
ejemplo que me saque de dudas :S

Gracias.

Un cordial saludo:
-- Nekmo.

Sitio web: http://nekmo.com
Dirección de contacto: cont...@nekmo.com
XMPP/Jabber: cont...@nekmo.com
Identi.ca: http://identi.ca/nekmo
Diaspora: Nekmo

Javi

unread,
Apr 19, 2011, 7:54:56 AM4/19/11
to Django-es
¡Coño Nekmo, que bueno verte por aquí eoliano!

Un par de ejemplos, según si lo quieres hacer en el __init__ del
formulario o en el cuerpo normal:

forms.py:

# cuerpo normal
class MiFormularioRadio(models.Model):
mi_campo = forms.ModelChoiceField(label=u'Mi campo',
queryset='mimodelo.objects.all', widget=forms.RadioSelect())
...
# si quieres agregar una clase o atributo en particular sería:
mi_campo = forms.ModelChoiceField(label=u'Mi campo',
queryset='mimodelo.objects.all',
widget=forms.RadioSelect(attrs={'class':'radio_rojo'}))
...

# __init__ (si tienes que procesar cosas para crear los choices u
otras historias...)
class MiFormularioRadio(models.Model):
def __init__(self, request, *args, **kwargs):
super(MiFormularioRadio, self).__init__(*args, **kwargs)
self.fields['mi_campo'].widget = forms.RadioSelect()
...

Espero que sirvan para aclararte. Aquí tienes algo de documentación
http://docs.djangoproject.com/en/1.3/ref/forms/widgets/#specifying-widgets

Un saludo,
Javier.

On Apr 19, 12:23 am, Nekmo <conta...@nekmo.com> wrote:
> Muy buenas.
>
> Llevo varias horas mirando la documentación de Django, pero tras todo
> este tiempo, sigo sin entender bien cómo se deben definir los widgets
> en un formulario a partir de un modelo, para, por ejemplo, usar Input
> Radio en vez de un Select en un ForeignKey o en una de opciones en un
> CharField. Me gustaría a ser posible que alguien me mostrase un
> ejemplo que me saque de dudas :S
>
> Gracias.
>
> Un cordial saludo:
> -- Nekmo.
>
> Sitio web:http://nekmo.com
> Dirección de contacto: conta...@nekmo.com
> XMPP/Jabber: conta...@nekmo.com

Nekmo

unread,
Apr 19, 2011, 8:36:43 AM4/19/11
to djan...@googlegroups.com
Ahhh vale, es que como en todos los ejemplos que veía los forms.Field
se extendían de un forms.Form, nunca pensé que se pudiesen usar en un
models.Model, gracias por la aclaración ^^

Bueno, pues muchas gracias, ahora podré seguir con mi proyecto :P y ya
nos veremos por EOL ;-)

Un cordial saludo:
-- Nekmo.

Sitio web: http://nekmo.com
Dirección de contacto: cont...@nekmo.com
XMPP/Jabber: cont...@nekmo.com


Identi.ca: http://identi.ca/nekmo
Diaspora: Nekmo

> --
> Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
>  Si quieres publicar en este grupo, envía un mensaje de correo
> electrónico a djan...@googlegroups.com
>  Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
>  Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.

Javi

unread,
Apr 19, 2011, 12:43:12 PM4/19/11
to Django-es
Wait wait, que me he hecho la picha un lío ¬_¬u

Sería extendiendo un forms.ModelForm en este caso.
class MiFormularioRadio(forms.ModelForm):
...

On 19 abr, 14:36, Nekmo <conta...@nekmo.com> wrote:
> Ahhh vale, es que como en todos los ejemplos que veía los forms.Field
> se extendían de un forms.Form, nunca pensé que se pudiesen usar en un
> models.Model, gracias por la aclaración ^^
>
> Bueno, pues muchas gracias, ahora podré seguir con mi proyecto :P y ya
> nos veremos por EOL ;-)
>
> Un cordial saludo:
> -- Nekmo.
>
> Sitio web:http://nekmo.com
> Dirección de contacto: conta...@nekmo.com
> XMPP/Jabber: conta...@nekmo.com
> Identi.ca:http://identi.ca/nekmo
> Diaspora: Nekmo
>
> El día 19 de abril de 2011 13:54, Javi <javi.azu...@gmail.com> escribió:
>
>
>
>
>
>
>
> > ¡Coño Nekmo, que bueno verte por aquí eoliano!
>
> > Un par de ejemplos, según si lo quieres hacer en el __init__ del
> > formulario o en el cuerpo normal:
>
> > forms.py:
>
> > # cuerpo normal
> > class MiFormularioRadio(models.Model):
> >   mi_campo = forms.ModelChoiceField(label=u'Mi campo',
> > queryset='mimodelo.objects.all', widget=forms.RadioSelect())
> >   ...
> >   # si quieres agregar una clase o atributo en particular sería:
> >   mi_campo = forms.ModelChoiceField(label=u'Mi campo',
> > queryset='mimodelo.objects.all',
> > widget=forms.RadioSelect(attrs={'class':'radio_rojo'}))
> >   ...
>
> > # __init__ (si tienes que procesar cosas para crear los choices u
> > otras historias...)
> > class MiFormularioRadio(models.Model):
> >    def __init__(self, request, *args, **kwargs):
> >        super(MiFormularioRadio, self).__init__(*args, **kwargs)
> >        self.fields['mi_campo'].widget = forms.RadioSelect()
> >        ...
>
> > Espero que sirvan para aclararte. Aquí tienes algo de documentación
> >http://docs.djangoproject.com/en/1.3/ref/forms/widgets/#specifying-wi...
Reply all
Reply to author
Forward
0 new messages