Chaque champ d'un formulaire contient déjà help_text
, bien qu'il doive être déclaré en tant que paramètre dans le champ, dans la classe Form.
Par ex,
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.")
Personnellement, je ne vois pas l'avantage d'avoir dans la base de données plutôt que sous la forme liée au champ.
EDIT:
Vous pouvez remplacer le texte d'aide. Imaginons d'abord que vous ayez un dictionnaire pour chaque formulaire que vous souhaitez remplacer dans un formulaire. Avant de rendre le contexte, vous pouvez retraiter le formulaire avec le dictionnaire en tant que tel:
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
puis ajouter my_form au contexte avant de le restituer.
Maintenant où et comment vous voulez stocker le texte d'aide est votre choix; par exemple, votre solution de créer un ModelFieldHelp avec trois champs char (Nom du modèle, Nom du champ, texte d'aide) fonctionnerait, alors vous avez besoin quelque chose comme
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])
Maintenant, il est logique d'automatiser ce processus pour tous vos modèles que vous créez des formulaires pour, en définissant une fonction dans le formulaire ou le modèle qui crée automatiquement ces ModelHelpFields (si non défini) et se met à jour avec le texte d'aide en cours après l'initialisation ...
Merci pour le pointeur, j'ai raté ça un. L'avantage de conserver les textes d'aide dans la base de données est que je n'ai pas besoin de changer de source si les personnes chargées d'écrire des textes d'aide veulent les changer. Je n'ai pas non plus besoin de publier des versions si ces textes changent. –
Je suppose que cela a du sens, mais comme le champ de saisie n'est pas modifié (par exemple, le nom n'est pas modifiable, la longueur n'est pas modifiable, l'ordre n'est pas modifiable). texte. Peut-être les ont-ils éditer le modèle? Mais de toute façon cela peut être fait d'une manière hackish; Je vais éditer prochainement. –
Je vois l'avantage de l'avoir dans la base de données plutôt que sous la forme liée au champ que je les utilise pour construire des tableaux dynamiques .. – Logic1