1

djangoフォームセットのすべてのフォームを必須にする方法は? を使用してRequiredFormSetいます。しかし、うまくいきません。何か不足していますか?ありがとう

class RequiredFormSet(BaseFormSet):
    def __init__(self, *args, **kwargs):
        super(RequiredFormSet, self).__init__(*args, **kwargs)
        for form in self.forms:
            form.empty_permitted = False
        #self.forms[0].empty_permitted = False

class RecipeIngredientForm(CustomModelForm):
    class Meta:
        model = RecipeIngredient
    def clean(self):
        ingredient = self.cleaned_data['ingredient']
        unit = self.cleaned_data['unit']
        if ingredient.ing_type in (ingredient.TYPE_WET, ingredient.TYPE_DRY) and not unit:
            raise forms.ValidationError('unit missing for %s.' % ingredient.name)
        return self.cleaned_data
 RecipeIngredientFormSet = formset_factory(RecipeIngredientForm, formset=RequiredFormSet)

更新:ここにトレースバックがあり、ここに私の見解があります

4

1 に答える 1

1
ingredient = self.cleaned_data.get('ingredient')
unit = self.cleaned_data.get('unit')

これでは上がらないKeyError

アップデート。

def clean(self):
    ingredient = self.cleaned_data.get('ingredient')
    unit = self.cleaned_data.get('unit') 
    if ingredient is not None and ingredient.ing_type in (ingredient.TYPE_WET, ingredient.TYPE_DRY) and not unit:
        raise forms.ValidationError('unit missing for %s.' % ingredient.name)
    return self.cleaned_data
于 2012-04-30T19:47:54.720 に答える