gpt4 book ai didi

python - 将附加信息附加到表单字段

转载 作者:太空狗 更新时间:2023-10-30 01:03:56 26 4
gpt4 key购买 nike

我正在尝试将附加信息传递给要在模板中显示的 Django 表单字段。我试图覆盖构造函数并向字段添加另一个属性,如下所示:

self.fields['field_name'].foo = 'bar'

但在模板中是这样的:

{{ form.field_name.foo }}

没有打印任何东西。有谁知道如何在不重写/继承表单字段类的情况下向字段添加附加信息?

最佳答案

根据 django.forms.forms , __getitem__() Form 的方法创建一个叫做 BoundField 的东西在返回它之前离开 Field,从而剥离它所做的任何更改。如果您真的想向其中插入更多功能,请覆盖该方法以在返回之前对绑定(bind)字段执行操作:

class MyForm(forms.Form):
def __getitem__(self, name):
boundfield = super(forms.Form,self).__getitem__(name)
boundfield.foo = "bar"
return boundfield

然后,"bar"将出现在该表单中的所有字段中。您也可以创建一个函数并调用它,使其不仅仅是一个硬编码字符串。

虽然添加更多字段或向表单本身添加属性更为标准,但如果您有每个字段都需要包含的全新信息类,这可能会为您完成。


获得相同内容的另一种方法是编辑字段的属性,然后通过 BoundField 访问它的 "field"属性:

class MyForm(forms.Form):
def __init__(self, *args, **kwargs)
super(forms.Form, self).__init__(*args, **kwargs)
self.fields['field_name'].foo = "bar"

然后,访问foo在模板中:

{{ form.field_name.field.foo }}

关于python - 将附加信息附加到表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3219576/

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