11

以下のモデルフォームがあり、「billable_work」というフィールドにカスタム検証を追加したいと思います。

フォームで送信されたフィールド「プロジェクト」にアクセスするにはどうすればよいですか?プロジェクトの値(以下の例では「p」)を確認したいのですが、送信された値をテストできるように適切な構文を見つけることができません。どんな助けでもいただければ幸いです。

class EntryForm(forms.ModelForm):
    class Meta:
        model = Entries
        exclude = ('billable_work','notes')  

    billable_work = forms.BooleanField()
    notes = forms.CharField(widget=forms.Textarea,required=False)

    def clean_billable_work(self):
        b = self.cleaned_data['billable_work']
        p = form.fields['project']

        if b == True and p == 523:
            raise forms.ValidationError(_("Entries cannot be both billable and NONE: Indirect."))
        return self.cleaned_data['billable_work']
4

1 に答える 1

18

特定のフォーム フィールドの clean メソッドではなく、モデルのclean()メソッドをオーバーライドしたいと思います。ドキュメントから -

このメソッドは、カスタム モデルの検証を提供し、必要に応じてモデルの属性を変更するために使用する必要があります。たとえば、フィールドの値を自動的に提供したり、複数のフィールドへのアクセスを必要とする検証を実行したりするために使用できます。

フォームに検証を入れたい場合は、フォームのclean()メソッドが同様の機能を提供します ( docsを参照)。

于 2013-02-26T17:29:58.037 に答える