如何在forms.py中获取字段类型(不在模板中)Django

时间:2018-05-04 22:13:11

标签: python django

我想在forms.py中获取特定的字段类型,因此我可以将该字段添加到特定的CSS类中。

在我的models.py我有多个CharField,DateField和其他像BigIntegerField等,我想要求它。这是我的代码:

forms.py

class MyForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        for field in self.fields:
            if type(field) == CharField: #Here's the problem
                self.fields[field].widget.attrs.update({
                    'class': 'form-control'})

    class Meta:
        model   = MyModel
        fields  = '__all__'

我不能一个接一个地做,因为我的模型中有很多字段。任何想法我该怎么做?非常感谢。

1 个答案:

答案 0 :(得分:3)

以下内容将返回Field使用的字符串:

YourModel._meta.get_field('field_name').get_internal_type()

这将返回班级

YourModel._meta.get_field('field_name')
>>> # Output .....

在你的情况下:

if YourModel._meta.get_field(field).get_internal_type() == 'CharField':
    self.fields[field].widget.attrs.update({
                'class': 'form-control'})