2

あるタイプの特定のモデルからすべてのフィールドを取得する方法は?

たとえば、モデルから 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 型であるため、ループを記述してコードを短くしたいと考えています。

4

2 に答える 2

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'
于 2013-04-03T13:08:03.540 に答える