Как при загрузке из поля ImageFiled взять изображение, взять из него thumbnail и сохранить в базу только thumbnail
1) Устанавливаем easy-thumnails
2) Создаем обычную модель (никаких расширений и прочей фигни):
class Profile(models.Model):
avatar = models.ImageField(upload_to='', blank=True, null=True, help_text="Идеальный размер 150 на 150 пикселей", verbose_name="Аватар юзера")
3) Делаем обычную django форму:
class Profile_Form(forms.Form):
avatar = forms.ImageField(label='Загрузить Аватар', required=False)
4) Делаем вьюшку:
from thumbnails import get_thumbnail
def update_profile(request, add_id):
token = {}
token.update(csrf(request))
if request.user.is_authenticated():
current_user = request.user
if request.POST:
form = Profile_Form(request.POST or None, request.FILES or None)
if form.is_valid():
avatar = form.cleaned_data['avatar']
options = {'size': (200, 200), 'crop': True}
thumb_url = get_thumbnailer(avatar, relative_name='avatar').get_thumbnail(options).url
profile_obj = Profile(avatar=thumb_url)
profile_obj.save()
return redirect('/profile'+ add_id, token)
else:
return redirect('/profile'+ add_id, token)
else:
return redirect('/profile'+ add_id, token)
else:
return redirect('/profile'+ add_id, token)
В итоге, мы загружаем любую фотку, которую может обработать Pillow, вырезаем из неё нужный нам Thumbnails и сохраняем его в модель.
В случае ошибки я просто возвращаю базовую страницу, вы можете написать свои обработчики ошибки.