从模型中获取djang中特定类型的所有字段

2024-09-29 01:28:33 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从特定类型的模型中获取所有字段?在

例如,我想从我的模型中获取所有正整数域。
怎么做?在

我之所以这么问是因为我有以下代码:

from django import forms
from hzmo_web.apps.hzmo.models import Report

class ReportForm(forms.ModelForm):
    class Meta:
        model = Report

    def __init__(self, *args, **kw):
        super(ReportForm, self).__init__(*args, **kw)
        self.fields['osiguranika'].widget.attrs['class']   = 'biggerWidth'
        self.fields['korisnika'].widget.attrs['class']     = 'biggerWidth'
        self.fields['sredstva'].widget.attrs['class']       = 'biggerWidth'
        self.fields['dzd_korisnika'].widget.attrs['class']  = 'biggerWidth'
        self.fields['dzd_djece'].widget.attrs['class']      = 'biggerWidth'
        self.fields['dzd_isplata'].widget.attrs['class']    = 'biggerWidth'

所有这些字段的类型都是PositiveIntegerField,所以我想写一些循环来缩短代码。在


Tags: 代码from模型importselfreport类型fields
2条回答

如果表单中的字段在模型中不存在,则需要在try/except块中执行此操作。在

def __init__(self, *args, **kw):
    super(ReportForm, self).__init__(*args, **kw)

    for field in self.fields.keys():
        if self._meta.model._meta.get_field(field).get_internal_type()=='PositiveIntegerField':
            self.fields[field].widget.attrs['class']='biggerWidth'

可能这些字段具有相同的表单字段,您可以检查:

for field in self.fields:
    if isinstance(field, forms.IntegerField):
        field.widget.attrs['class'] = 'biggerWidth'

相关问题 更多 >