2013-06-25 4 views
0

Как скрыть поле в django ClearableFileInput. У меня есть форма, в которой я должен скрывать флажок, чтобы, если вы хотите изменить, вы должны загрузить новый, так как это обязательное поле.Скрыть Django ClearableFileInput checkbox

+0

Это поле * обязательно * или нет null? Покажите нам какой-то код. –

+0

yes его обязательное поле – user1940979

+0

Почему бы не использовать простой 'FileInput'? –

ответ

1

Если форма использует ImageField затем использовать FileInput виджет вместо ClearableFileInput

class Meta: 
    widgets = { 
     'field_name': forms.FileInput, 
    } 
1

ОК, вы можете использовать FileInput, но вы собираетесь скрыть флажок и " В настоящее время: path_to_file "оба.

Одно решение, чтобы скрыть только флажок, чтобы подклассы ClearableFileInput виджет, таким образом:

#widgets.py 
from django.forms.widgets import FileInput 
from django.utils.translation import ugettext_lazy 
from django.utils.html import format_html 
from django.utils.encoding import force_text 
from django.utils.safestring import mark_safe 


class NotClearableFileInput(FileInput): 
    initial_text = ugettext_lazy('Currently') 
    input_text = ugettext_lazy('Change') 

    template_with_initial = '%(initial_text)s: %(initial)s <br />%(input_text)s: %(input)s' 

    url_markup_template = '<a href="{0}">{1}</a>' 

    def render(self, name, value, attrs=None): 
     substitutions = { 
      'initial_text': self.initial_text, 
      'input_text': self.input_text, 
     } 
     template = '%(input)s' 
     substitutions['input'] = super(NotClearableFileInput, self).render(name, value, attrs) 

     if value and hasattr(value, "url"): 
      template = self.template_with_initial 
      substitutions['initial'] = format_html(self.url_markup_template, 
               value.url, 
               force_text(value)) 

     return mark_safe(template % substitutions) 

Теперь вы можете использовать этот виджет в виде:

widgets = { 
     'field_name': widgets.NotClearableFileInput, 
    } 

Вы будете иметь этот результат :

result

Ссылка: widgets.py from django repository

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