将类添加到Select时,选项会消失

时间:2018-01-06 13:04:41

标签: django-forms

我有一个模特

class FooBar(models.Model):
    foobar_choice = models.CharField(choices=FOOBAR_CHOICES, default='option_a', blank=False, null=False)

和ModelForm

class FooBarForm(ModelForm):
    class Meta:
        model = FooBar
        fields = ['foobar_choice']

这很有效。当我将表单加载到我的模板中时,它会显示我在FOOBAR_CHOICES中定义的所有值。

我想要的是在foobar_choice字段的小部件中添加一个类。我试图通过将以下代码添加到FooBarForm,

来做到这一点
def __init__(self, *args, **kwargs):
    super(FooBarForm, self).__init__(*args, **kwargs)
    self.fields['foobar_choice'].widget = Select(attrs={
        'class': 'myClass',
        })

当我这样做时,我的模板返回一个空的选择对象,尽管有正确的类。这里发生了什么?我使用错误的小部件还是我通过更改attrs字典来覆盖某些内容?

1 个答案:

答案 0 :(得分:0)

当你手动定义一个小部件时,会出现一些django魔法被覆盖。我设法通过将init位更改为

来解决我的问题
def __init__(self, *args, **kwargs):
    super(FooBarForm, self).__init__(*args, **kwargs)
    self.fields['foobar_choice'].widget = Select(attrs={
        'class': 'myClass',
        },
    choices=FOOBAR_CHOICES)
相关问题