Max*_*Max 5 python django django-forms
我正在尝试将其他信息传递给Django表单的字段以显示在模板中.我试图覆盖构造函数并将另一个属性添加到字段中,如下所示:
self.fields['field_name'].foo = 'bar'
Run Code Online (Sandbox Code Playgroud)
但在模板中:
{{ form.field_name.foo }}
Run Code Online (Sandbox Code Playgroud)
没有打印任何东西.有没有人知道如何在不重写/继承表单字段类的情况下向字段添加其他信息?
根据django.forms.forms,a的__getitem__()方法在返回之前Form创建一个叫做BoundFieldout of the Field的东西,从而剥离你所做的任何改变.如果你真的想在其中插入更多功能,请在返回之前覆盖该方法以对绑定字段执行操作:
class MyForm(forms.Form):
def __getitem__(self, name):
boundfield = super(forms.Form,self).__getitem__(name)
boundfield.foo = "bar"
return boundfield
Run Code Online (Sandbox Code Playgroud)
然后,"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"
Run Code Online (Sandbox Code Playgroud)
然后,要foo在模板中访问:
{{ form.field_name.field.foo }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
851 次 |
| 最近记录: |