gpt4 book ai didi

django - 如何向将存储在数据库中的 Django 字段添加附加描述?

转载 作者:行者123 更新时间:2023-12-02 07:12:16 24 4
gpt4 key购买 nike

我想为表单中的输入字段提供上下文帮助(“名字”:“您的名字。如果您有多个名字,请全部输入。”)。我不想将它们硬编码在源代码中,而是希望通过管理界面使这些帮助文本可编辑。我的想法是以某种方式扩展字段类(包括类似于 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.")

就我个人而言,我并不认为将其放在数据库中而不是以与字段绑定(bind)的形式存在有什么好处。

编辑:

因此您可以覆盖帮助文本。首先假设您有一个字典,用于您想要覆盖表单中的 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(如果未定义)并在之后使用当前帮助文本更新自身,对于您为其创建表单的所有模型自动化此过程可能是有意义的正在初始化...

关于django - 如何向将存储在数据库中的 Django 字段添加附加描述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4267972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com