私のDjangoアプリは、Djangoの管理アプリをテーマにするツールとしてDjangoSuitを使用しています。Suitが実行できることの1つは、次のようなウィジェットを形成するために要素を追加および追加することです。
class PropertyForm(ModelForm):
class Meta:
model = Property
widgets = {
'amount': EnclosedInput(prepend = "GBP"),
}
効果は次のとおりです。
これは素晴らしい機能ですが、(擬似コードで)動的に追加できればもっと便利です。
'amount': EnclosedInput(prepend = my_model_instance.currency)
私は次のようにフォームの初期化をオーバーライドしようとしました:
class PropertyForm(ModelForm):
def __init__(self, *args, **kwargs):
inst = kwargs["instance"]
self._meta.widgets["amount"] = EnclosedInput(prepend = inst.currency)
super(PropertyForm, self).__init__(*args, **kwargs)
不思議なことに、これはinitメソッドにブレークポイントを設定した場合にのみ機能します。タイミングの問題があるようです。
だから私の質問は、これを実装するための最良の方法(もしあれば)は何でしょうか?