Django ModelForm ImageField
У меня есть модель и форма (forms.ModelForm), в которой у меня есть ImageField. Модель напоминает:
class Business(models.Model):
business_name = models.CharField(max_length=128)
.
.
business_image = ImageField(
max_length=128,
upload_to=upload_business_image_handler,
height_field='business_image_height',
width_field='business_image_width'
)
business_image_height = models.IntegerField(blank=True, null=True)
business_image_width = models.IntegerField(blank=True, null=True)
.
.
Сопутствующая форма:
class BusinessForm(forms.ModelForm):
def __init__(self, data=None, files=None, branch_list = None, country_list = None, *args, **kwargs):
super(BusinessForm, self).__init__(data, *args, **kwargs)
# create the MultipleChoiceField choice_list based on language
self.fields['branch'].choices = branch_list
self.fields['country'].choices = country_list
self.postdata = data
self.files = files
business_name = forms.CharField(widget=forms.TextInput(attrs={'size':'50', 'class': 'address'}), required=True)
#business_image = forms.ImageField(widget=forms.ClearableFileInput())
Последняя строка в форме закомментирована, потому что forms.ClearableFileInput () является виджетом по умолчанию для FileFields и ImageFields.
Теперь, когда эта форма используется для редактирования существующей записи, изображение в шаблоне отображается следующим образом:
Currently: <image_url>
Change: <browse_button>
Я хотел бы изменить текстовые метки "В настоящее время" и «Изменить» и вместо показа image_url я хотел бы показать изображение.
Конечно, я могу скопировать и изменить код «класса ClearableFileInput (FileInput)»; находится в «site-packages / django / forms / widgets.py»; но мне интересно, так ли это сделать?
Любая помощь или предложение приветствуется.
Теперь я посмотрел код «класса ClearableFileInput (FileInput)»;