не может изменить значение по умолчанию для многих виджетах в форме django

0 Atma [2016-12-18 08:20:00]

Привет, у меня есть много разных полей:

class Seeking(models.Model):  
    entity = models.OneToOneField(Entity)
    company_type = models.ManyToManyField(CompanyTypeChoice)

У меня есть эта форма, которая использует поле:

class SeekingForm(forms.ModelForm):

    class Meta:
        model = Seeking
        widgets = {'m2m_field': forms.CheckboxSelectMultiple}
        exclude = (
                  'entity',
                  )

     def __init__(self, *args, **kwargs):

         super(SeekingForm, self).__init__(*args, **kwargs)
         self.fields["company_type"].widget = forms.CheckboxSelectMultiple()

Виджет по-прежнему отображается как многоэкранный. Я использую django 10. Что я делаю неправильно?

django django-forms


1 ответ


1 Решение Messaoud Zahi [2016-12-18 11:44:00]

Чтобы указать пользовательский виджет для поля, используйте атрибут widgets внутреннего класса Meta. Это должно быть имена полей сопоставления словаря для классов или экземпляров виджетов.

class SeekingForm(forms.ModelForm):

    class Meta:
        model = Seeking
        widgets = {'company_type': forms.CheckboxSelectMultiple() }
        exclude = (
              'entity',
              )