モデルにCharField with
choices
ありましたが、このフィールド render as が必要で、CheckboxSelectMultiple
リストをフォーム クラスに返します。選択肢TypedChoiceField
で自動的に割り当てられるフォームクラスでは、検証されません。Field
フィールドを変更することにし、リストを検証するためにform_class
で新しいフィールドを作成しました。TypedMultipleChoiceField
form_class
class MultipleTypedChoiceModelField(models.Field):
def get_internal_type(self):
return 'MultipleTypedChoiceModelField'
def formfield(self, **kwargs):
defaults = {'form_class': TypedMultipleChoiceField, }
defaults.update(kwargs)
return super(MultipleTypedChoiceModelField, self).formfield(**defaults)
しかし、それは効果がありません。モデル フィールドの選択肢をコメント アウトすると、タイプは MultipleTypedChoiceModelField になります。したがって、form_class は、選択リストの定義を使用してアプライアンスに指定されていると思います。
def formfield(self, **kwargs):
if self._choices: # or self.choices:
defaults = {'form_class': TypedMultipleChoiceField, }
defaults.update(kwargs)
return super(MultipleTypedChoiceModelField, self).formfield(**defaults)
しかし、それも効果がありません。の割り当てがどこにあるのかわかりませんform_class
。たぶん、この動作を変更するより良い方法がありますか? 明らかに不必要なので、多対多の関係を持つモデルを追加する予定はありません。