引用模板中的ModelField属性

时间:2017-02-18 12:33:00

标签: django django-models django-forms django-templates

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()

1 个答案:

答案 0 :(得分:0)

首先,案件意义重大; field.mypropertyfield.MyProperty不同。

其次,当您遍历表单时,不要直接获取表单字段,您将获得BoundField实例。它们中的每一个都具有field属性,该属性是字段本身。所以:

{{ field.field.MyProperty }}