2017-07-17 12 views
1

私はMultipleChoiceFieldとオンライン登録アプリケーションが必要です。私はフィールドでそれらを使用しようとすると、私は未知のフィールドエラーを取得します。管理パネルにも表示されません。Django:フォーム/管理者でMultipleChoiceFieldを使用する方法

# models.py 
... 
CHILDCARE_REASONS = (('Working', 'working'),('Training', 'training'),('Teen Parent', 'teen_parent'),('Working W/Child With A Disability', 'child_disability'),('Adult W/Disability', 'adult_disability'),) 
reasons_for_childcare = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=CHILDCARE_REASONS) 
... 

# forms.py 
class EnrollForm(forms.ModelForm): 
class Meta: 
    model = EnrollmentApplication 
    fields = [ 
     ... 
     'reasons_for_childcare ', 
     ... 
    ] 

答えて

1
  1. それは適切ではない、あなたのモデルにフォームフィールドを使用しないでください。複数選択欄の場合は、代わりにdjango-multiselectfieldをお勧めします。

  2. タプルの順序を変更する必要があります。正しい方法はまずキーであり、その後の値です。

  3. フィールド文字列 "reasons_for_childcare"の最後に余分なスペースがあります。

だから、このことを念頭に置いて、解決策は次のようになります。

models.py

from multiselectfield import MultiSelectField 


class EnrollmentApplication(models.Model): 
    CHILDCARE_REASONS = (('working', 'Working'), 
         ('training', 'Training'), 
         ('teen_parent', 'Teen Parent'), 
         ('child_disability', 'Working W/Child With A Disability'), 
         ('adult_disability', 'Adult W/Disability')) 
    reasons_for_childcare = MultiSelectField(choices=CHILDCARE_REASONS) 

forms.py

class EnrollForm(forms.ModelForm): 
    class Meta: 
     model = EnrollmentApplication 
     fields = [ 
      'reasons_for_childcare', 
     ] 
関連する問題