7

インライン フォームセットの特定のフィールドを消去する必要がありますが、その方法がわかりません。

フォームセット メソッドを試してみましたdef clean(self)が、クリーニングされた値を保存する場所がわかりません。クリーニングされた値を に設定しようとするforms[0].data['field']と、「この QueryDict インスタンスは不変です」というエラーが発生します。

「通常の」形式では、def clean_fieldXY(self)I のメソッドを使用して機能しreturn cleaned_valueます。

助けてください。

4

1 に答える 1

9

cleanフォーム クラスを使用するようにインライン フォームセットを設定し、フィールドの関数を作成できます。

myapp/forms.py

class InlineFormsetForm(forms.Form)
    myfield = forms.CharField(required=False, max_length=50)

    def clean_myfield(self):
        data = self.cleaned_data['myfield']
        if data == 'badinput':
            raise forms.ValidationError("I hates it!")
        return data

次に、myapp/views.py

from myapp.forms import InlineFormsetForm
from myapp.models import ParentRecord, ChildRecord

def editmything(request):
    MyFormSet = inlineformset_factory(ParentRecord, ChildRecord, form=InlineFormsetForm)
于 2010-09-10T20:12:45.263 に答える