2017-02-18 2 views
0

В шаблонах Django есть возможность ссылаться на атрибуты поля непосредственно в шаблоне. Например, в .help_text или .label. Как что:ссылаются на свойство ModelField в шаблоне

{% 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

Во-первых, дело имеет важное значение; field.myproperty не то же самое, как field.MyProperty

Во-вторых, когда вы итерацию через форму вы непосредственно не получить поля формы, вы получите экземпляры BoundField Каждый из них имеет field свойство, которое само поле так...:

{{ field.field.MyProperty }} 
+0

спасибо большое !!! он работает отлично. –

Смежные вопросы