【问题标题】:widgets for ChoiceField in modelform模型表单中 ChoiceField 的小部件
【发布时间】:2021-08-16 21:07:45
【问题描述】:

我正在为我的表单Post 使用模型表单,并且我正在使用引导启动代码作为我的base.html,但是因为我在我的add_blog 页面上使用了 {% csrf_token %} {{form.as_p}},引导程序不起作用并且因为它需要class='form-control',我已经设法在我的所有字段上做到这一点,但选择输入,如果我在小部件中包含我的作者(选择字段)我得到一个 TypeError:init( ) 得到了一个意外的关键字参数“attrs”

class PostForm(forms.ModelForm):
class Meta:

    model = Post
    fields = ("title", "title_tag", "author", "body")
    widget = forms.Select(attrs={"class": "form-control"})

    widgets = {
        'title': TextInput(attrs={'class': 'form-control'}),
        'title_tag': TextInput(attrs={'class': 'form-control'}),
        'body': Textarea(attrs={'class': 'form-control'}),
        'author': ChoiceField(attrs={'class': 'form-control'})


    }

【问题讨论】:

    标签: python django


    【解决方案1】:

    ChoiceField [Django-doc]表单字段,而不是表单小部件ChoiceField 的默认小部件是 Select [Django-doc]。因此,您可以指定将此小部件用于:

    class PostForm(forms.ModelForm):
        class Meta:
            model = Post
            fields = ('title', 'title_tag', 'author', 'body')
    
            widgets = {
                'title': TextInput(attrs={'class': 'form-control'}),
                'title_tag': TextInput(attrs={'class': 'form-control'}),
                'body': Textarea(attrs={'class': 'form-control'}),
                'author': Select(attrs={'class': 'form-control'})
            }

    【讨论】:

    • 非常感谢它的工作,我不知道表单字段和表单小部件之间的差异我知道但没有意识到差异,我很感激,
    猜你喜欢
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2018-07-18
    • 1970-01-01
    • 2021-10-14
    • 2014-07-11
    相关资源
    最近更新 更多