Nik*_*nko 4 django django-models django-forms
我想为我的表单中的输入字段提供上下文帮助(“名字”:“您的名字。如果您有多个,请输入全部。”)。我不想将它们硬编码在源代码中,而是希望通过管理界面使这些帮助文本可编辑。我的想法是以某种方式扩展字段类(包括类似于 的新属性verbose_name)并将其存储在数据库中(可能三列表表“模型、字段、帮助”就足够了)。
不过,我不知道这是否可行,或者以前已经这样做过。你?如果还没有,你能给我一些从哪里开始吗?
表单中的每个字段都已包含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.")
Run Code Online (Sandbox Code Playgroud)
就我个人而言,我不认为将其放在数据库中而不是以与字段相关的形式存在有什么好处。
编辑:
因此您可以覆盖帮助文本。首先假设您有一个字典,用于您想要覆盖表单中的 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
Run Code Online (Sandbox Code Playgroud)
然后在渲染之前将 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])
Run Code Online (Sandbox Code Playgroud)
现在,通过在表单或模型中定义一个函数来自动创建表单的所有模型的此过程可能是有意义的,该函数会自动创建这些 ModelHelpFields(如果未定义)并在初始化后使用当前帮助文本更新自身。 ..
| 归档时间: |
|
| 查看次数: |
5397 次 |
| 最近记录: |