Django ModelForm ImageField
Eu tenho um modelo e um formulário (forms.ModelForm) em que tenho um ImageField. O modelo se assemelha:
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)
.
.
O formulário de acompanhamento:
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())
A última linha no formulário é comentada porque forms.ClearableFileInput () é o widget padrão para FileFields e ImageFields.
Agora, quando este formulário é usado para editar um registro existente, a imagem no modelo é mostrada da seguinte maneira:
Currently: <image_url>
Change: <browse_button>
Gostaria de alterar os rótulos de texto "Atualmente" e "Alterar" e, em vez de mostrar o image_url, gostaria de mostrar a imagem.
É claro que posso copiar e modificar o código de 'classe ClearableFileInput (FileInput)' encontrado em 'site-packages / django / forms / widgets.py', mas estou querendo saber se essa é a maneira de conseguir isso.
Qualquer ajuda ou sugestão é apreciada.
Agora eu olhei para o código da 'classe ClearableFileInput (FileInput)'