Django模板有可能直接在模板中引用字段的属性。例如.help_text或.label。像那样:
{% for field in form %}
{{field.label|safe}}
{{field}}
{% endfor %}
引用自定义字段属性的正确方法是什么? 例如:
{{field.myproperty}}
我使用ModelForm,在models.py中我使用自己的ModelField。一切都很完美但任何添加我自己的属性的尝试都失败了。从某种意义上说,一切都还可以,但如果我在模板中引用这个属性,它就不会得到它: - (
Models.py:
class MyFormField(forms.IntegerField):
MyProperty = 'whatever'
def __init__(self,active1='default',*args, **kwargs):
self.MyProperty = 'whatever'
super(MyFormField, self).__init__(*args, **kwargs)
class MyOwnField(models.IntegerField):
def __init__(self, active1='asdf',*args, **kwargs):
super(MyOwnField, self).__init__(*args, **kwargs)
def formfield(self, **kwargs):
defaults = {'form_class': MyFormField}
defaults.update(kwargs)
return super().formfield(**defaults)
class MyModel(Model):
ns6_1 = MyOwnField()
答案 0 :(得分:0)
首先,案件意义重大; field.myproperty
与field.MyProperty
不同。
其次,当您遍历表单时,不要直接获取表单字段,您将获得BoundField实例。它们中的每一个都具有field
属性,该属性是字段本身。所以:
{{ field.field.MyProperty }}