2013-04-03 62 views
1

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

E.g.我想从我的模型中获取PositiveIntegerField的所有字段。
如何做到这一点?

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

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,所以我想写一些循环使代码更短。

回答

0

也许这些领域具有相同的形式现场,您可以检查:

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

如果您的模型中没有表单中存在的字段,您可以在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' 
相关问题