フォームの各フィールドにはすでにhelp_text
が含まれていますが、Formクラスのフィールドでパラメータとして宣言する必要があります。
例えば、個人的に
class SomeForm(forms.Form):
some_field1 = forms.CharField(verbose_name="Some Field 1", max_length=100, help_text="Please the first field.")
some_field2 = forms.CharField(verbose_name="Some Field 2", max_length=100, help_text="Please the second field.")
は、私は、データベース内ではなく、フィールドに結びつけられた形でそれを持つことの利点は表示されません。
編集:
したがって、ヘルプテキストを無効にすることができます。最初にフォーム内でhelp_textを上書きしたい各フォームの辞書があるとしましょう。
my_form = SomeForm()
for field_name, new_help_text in my_form_override_help_text_dict.items():
my_form.fields[field_name].help_text = new_help_text
し、それをレンダリングする前に、コンテキストにmy_formを追加:コンテキストをレンダリングする前に、次のような辞書でフォームを再処理できます。
ここで、どのようにヘルプテキストを保存するかはあなたの選択です。例えば、3つの文字フィールド(モデル名、フィールド名、ヘルプテキスト)とModelFieldHelpを作成するあなたのソリューションは、すべてのあなたのモデルのためにこのプロセスを自動化するために今では意味をなさないかもしれ
class ModelHelpField(models.Model):
model_name = CharField(max_length=50)
field_name = CharField(max_length=50)
new_help_text = CharField(max_length=50)
field_help_qs= ModelHelpField.objects.filter(model_name='SomeModel')
my_form_override_help_text_dict = dict([(mfh.field_name, mfh.new_help_text) for mfh in field_help_qs])
ようなものが必要、うまくいきますこれらのModelHelpFields(定義されていない場合)を自動的に作成し、初期化後に現在のヘルプテキストで自動的に更新する関数をフォームまたはモデルで定義することにより、フォームを作成します。
ポインタをありがとう、私はそれを逃しました1。ヘルプテキストをデータベースに保存する利点は、ヘルプテキストを作成する担当者が変更したい場合、ソースを変更する必要がないことです。これらのテキストが変更された場合は、リリースを行う必要もありません。 –
私はいくつかの意味があると思うが、入力フィールドが変更されていない(例えば、名前は編集不可能、長さは編集不可能、注文は編集不可能)。ヘルプを動的に編集するのは分かりませんテキスト。テンプレートを編集してもよいでしょうか?しかし、とにかくそれはhackish方法で行うことができます。私はすぐに編集します。 –
私は動的なテーブルを構築するためにそれらを使用するので、フィールドに結び付けられたフォームではなく、データベースにその利点があります。 – Logic1