Сохранить в поле изображения django

Я пытаюсь

1) Возьмите загруженное изображение и измените его на черно-белое с помощью подушки.

2) В представлении сохраните исходный файл в поле FileField с именем «файл».

3) В представлении сохраните черно-белую версию в ImageField под названием "thumbnail_225"

1 и 2 работают отлично, но я не могу понять # 3.

Любая обратная связь очень ценится.

Просмотреть

def archive_media_upload(request):

    if request.method == 'POST':
        form = UploadForm(request.POST, request.FILES)
        if form.is_valid():
            m = form.save(commit=False)

            m.user = request.user
            m.type = 1

                        # create black and white
            image = Image.open(m.file)
            black_and_white = image.convert("L")

                        #HOW DO I SAVE/ASSIGN BW IMAGE TO the "thumbnail_225" ImageField?

            m.save()

            return HttpResponseRedirect(reverse('archive_media_archive'))

    else:
        form = UploadForm(initial={'user': request.user })

    return render(request, 'archive_app/archive_media_upload.html', {'archive':True, 'show_upgrade_link': show_upgrade_link,'form': form})

Модель

class Media(models.Model):
    created_date = models.DateTimeField(default=datetime.now)
    type = models.IntegerField(default=0)

    user = models.ForeignKey(User)

    title = models.CharField(max_length=255, blank=True)
    file = models.FileField(upload_to=get_upload_file_name)

    thumbnail_225 = models.ImageField(upload_to="thumbnail_images/", blank=True)

person bbrooke    schedule 04.12.2013    source источник


Ответы (1)


Короче говоря, то, что вы ищете, это (я думаю) метод clean. Вы должны определить это в своей форме:

класс UploadForm(forms.Form):

thumbnail_225  = forms.ImageField()

...

def clean_thumbnail_225 (self):
    thumbnail_225 = self.cleaned_data["thumbnail_225"]
    image = Image.open()
    black_and_white = image.convert("thumbnail_225")
    ...
    # return the clean data...

Обратите внимание, что приведенный выше код является лишь общей схемой. На самом деле он не будет работать и не содержит всей правильной логики и\или синтаксиса. Он предназначался только для демонстрации. Полные подсказки можно найти в документации DJANGO по проверке форм и полей.

person oz123    schedule 04.12.2013