我有一个模特
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字典来覆盖某些内容?
答案 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)