1

ModelMultipleChoiceField をサブクラス化するカスタム フィールドがあります。queryset パラメーターを介して表示される選択肢を提供します。このクエリセットは特定の値を除外します。私の問題は、一部のワークフローのクリーンアップ操作中に、クエリセットによって最初に除外されたオプションを選択する必要がある場合に発生します。この値を保存しようとすると、django は有効なオプションではないと言って保存を拒否します。ModelMultipleChoiceField の clean メソッドを調べたところ、提供された「値」が最初のクエリセット内からのものであるかどうかがチェックされることがわかりました。これが私のジレンマの原因です。

大きなハッキングなしでこの問題を回避できるかどうかを知りたいと思いました。

4

1 に答える 1

2

django/forms/models.py:1011には次のものがあります。

qs = self.queryset.filter(**{'%s__in' % key: value})

カスタム フィールドの clean() メソッドをオーバーライドして、 を呼び出す前に必要に応じて self.queryset を変更するとsuper(MyField, self).clean(value)、このエッジ ケースを比較的きれいに処理できるようです。

于 2011-07-08T22:46:37.407 に答える