ImageField を含むモデルとフォーム (forms.ModelForm) があります。モデルは次のようになります。
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>
text-labels 'Currently' と 'Change' を変更したいのですが、image_url を表示する代わりに画像を表示したいと思います。
もちろん、「site-packages/django/forms/widgets.py」にある「class ClearableFileInput(FileInput)」のコードをコピーして変更することはできますが、それがこれを達成する方法であるかどうか疑問に思っています。
任意のヘルプや提案をいただければ幸いです。
今、「class ClearableFileInput(FileInput)」のコードを見てきました