1

これらの各ケースでカスタム マルチウィジェットの入力を検証するための正しい方法は何ですか?

  1. カスタムフィールドを実装したい場合は?
  2. 既存のデータベース フィールド タイプ (DateField など) を使用する場合は?

この動機は、次の 2 つの質問に由来します。

  1. django のマルチウィジェットを使用するにはどうすればよいですか?
  2. Django サブクラス化マルチウィジェット

私は自分がだまされたと感じているという事実に特に興味があります。私は次value_from_datadict()のように使用しました:

def value_from_datadict(self, data, files, name):

    datelist = [widget.value_from_datadict(data, files, name + '_%s' % i) for i, widget in enumerate(self.widgets)]
    try:   
        D = date(day=int(datelist[0]), month=int(datelist[1]), year=int(datelist[2]))
        return str(D)
    except ValueError:
        return None

辞書を調べてPOST、ウィジェットの値を構築します(リンクされた質問を参照)。ただし、同時に、いくつかの検証に取り組みました。つまり、日付オブジェクトとしての作成が失敗した場合、チェックで失敗するものをD返します。Noneis_valid()

したがって、私の3番目の質問は、これを別の方法で行うべきですか? この場合、カスタム フィールドは必要ありません。

ありがとう。

4

2 に答える 2

0

他のフィールドと同じようにフォーム フィールドを検証し、フォームに clean_fieldname メソッドを実装します。検証ロジックが多くのフォーム フィールドにまたがっている場合 (これは多くのウィジェットと同じではありません!)、それをフォームの clean() メソッドに配置します。

http://docs.djangoproject.com/en/1.2/ref/forms/validation/

于 2011-01-18T08:02:59.320 に答える