Каждое поле в форме уже содержит 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 в контекст перед его рендерингом.
Теперь, где и как вы хотите сохранитьтекст справки - ваш выбор;Например, ваше решение по созданию 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 (если они не определены) и обновляет себя текущим текстом справки после инициализации ...