2010-07-02 17 views
7

Tengo django ModelForm para el modelo con ManyToManyField. Quiero cambiar el widget para este campo al CheckboxSelectMultiple. ¿Puedo hacer esto sin anular un campo en una definición de formulario?Cómo cambiar el widget ManyToManyField a CheckboxSelectMultiple sin anular la definición de campo en un ModelForm

constantemente utilizo código similar al siguiente:

class MyModel(ModelForm): 
    m2m_field = forms.ModelMultipleChoiceField(queryset = SomeModel.objects.all(), 
               widget = forms.CheckboxSelectMultiple()) 

¿Hay otra manera de hacer esto?

EDIT: Necesito esto para Django 1.1.1 proyecto

Respuesta

7

Otra manera de hacer esto lo está haciendo en el init del ModelForm:

class MyModel(ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(MyModel, self).__init__(*args, **kwargs) 
     self.fields['m2m_field'].widget = forms.CheckboxSelectMultiple() 

    [...] 
25

Si está utilizando Django 1.2 +, puede usar la tupla widgets en la clase Meta interna.

class MyModelForm(forms.ModelForm): 
    class Meta: 
     widgets = {'m2m_field': forms.CheckboxSelectMultiple} 

Ver the documentation.

+0

nice! no lo sabía :) – patrick

+0

genial! ¡Gracias! desafortunadamente en este proyecto utilizo Django 1.1.1 por lo que no ayudará, de todos modos, gracias por la pista. – dzida

+0

¡No se puede votar lo suficiente! – BastiBen

Cuestiones relacionadas