Форум сайта python.su
0
помогите пожалуйста решить проблему
я использовал для формы загрузки изображения стандартный виджет. но меня не устраивает разметка. хотелось бы удалить некоторые теги и добавить новые. для этого я использовал переопределение метода render()
models:
class Aaa(User): drum_photo = models.ImageField('Фото',upload_to='aaa/photo/', blank=True,null=True,)
from app_drummersaransk.widgets import ImageWidget class DrumDataForm(forms.ModelForm): drum_photo = forms.ImageField( widget = ImageWidget()) class Meta: model = Aaa fields = ( #'drum_photo', )
from django.contrib.admin.widgets import AdminFileWidget from django.utils.safestring import mark_safe import os class ImageWidget(AdminFileWidget): def render(self, name, value, attrs=None): output = [] if value and getattr(value, "url", None): image_url = value.url file_name=str(value) # defining the size size='100x100' x, y = [int(x) for x in size.split('x')] try : # defining the filename and the miniature filename filehead, filetail = os.path.split(value.path) basename, format = os.path.splitext(filetail) miniature = basename + '_' + size + format filename = value.path miniature_filename = os.path.join(filehead, miniature) filehead, filetail = os.path.split(value.url) miniature_url = filehead + '/' + miniature # make sure that the thumbnail is a version of the current original sized image if os.path.exists(miniature_filename) and os.path.getmtime(filename) > os.path.getmtime(miniature_filename): os.unlink(miniature_filename) # if the image wasn't already resized, resize it if not os.path.exists(miniature_filename): image = Image.open(filename) image.thumbnail([x, y], Image.ANTIALIAS) try: image.save(miniature_filename, image.format, quality=100, optimize=1) except: image.save(miniature_filename, image.format, quality=100) output.append(u'<hr /><hr /><hr /><div><a href="%s" target="_blank"><img src="%s" alt="%s" /></a></div> %s ' % \ (miniature_url, miniature_url, miniature_filename, _('Change:'))) except: pass output.append(super(AdminFileWidget, self).render(name, value, attrs)) return mark_safe(u'++++++++++++++++'.join(output))
#'drum_photo',
<br />
Отредактировано zlodiak (Май 25, 2014 13:12:50)
Офлайн
568
А не проще эту форму в шаблоне собрать?
Офлайн
0
максимум что я смогу сделать в шаблоне так это ручками прописать
<input type="file" и т.д. >
Отредактировано zlodiak (Май 25, 2014 15:49:27)
Офлайн