2010-07-02 11 views
7

Mam django ModelForm dla modelu z ManyToManyField. Chcę zmienić widżet dla tego pola na CheckboxSelectMultiple. Czy mogę to zrobić bez przesłonięcia pola w definicji formularza?Jak zmienić widżet ManyToManyField na CheckboxSelectMultiple bez przesłonięcia definicji pola w ModelForm

ja ciągle używać kodu podobnego do tego:

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

Czy istnieje inny sposób to zrobić?

EDIT: Muszę to dla Django 1.1.1 projektu

Odpowiedz

7

Innym sposobem, aby to zrobić to robi w init, z ModelForm:

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

    [...] 
25

Jeśli używasz Django 1.2 +, możesz użyć krotki widgets w wewnętrznej klasie Meta.

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

Zobacz the documentation.

+0

fajnie! nie wiedziałem tego :) – patrick

+0

fajny! Dzięki! Niestety w tym projekcie korzystam z Django 1.1.1, więc to nie pomoże, w każdym razie dzięki za podpowiedź. – dzida

+0

Nie udało się osiągnąć tego wystarczająco! – BastiBen

Powiązane problemy