Django Forms загружает изображение - данные формы работают, кроме изображения

Я пытаюсь заставить загрузку работать с Джанго. Я не получаю сообщение об ошибке при попытке загрузить его, и новый элемент сохраняется, но изображение отсутствует. Другие данные формы все там. Я гуглил и переполнял стек последние 2 дня и не могу найти решение. Я даже не знаю, где это идет не так! Любой совет будет удивительным. Спасибо.:)

из views.py:

    if request.method == 'POST':
        form = ItemForm(request.POST, request.FILES, user=request.user, forsale=True)
        if form.is_valid():
            new_item = form.save()
            return item_view(request, marketplace_id, new_item.id)
    else:
        form = ItemForm(user=request.user)

из models.py:

class Item(models.Model):

    photo =  StdImageField(upload_to='images/', blank=True, size=(500, 500, True), thumbnail_size=(210, 150, True))

    user = models.ForeignKey(User)
    ...

    def __unicode__(self):
        return self.name

class ItemForm(ModelForm):
    class Meta:
        model = Item
        fields = ['name', 'description', 'price', 'shipping', 'photo', 'section']

    def __init__(self, *args, **kwargs):
        self._user = kwargs.pop('user')
        super(ItemForm, self).__init__(*args, **kwargs)

из шаблона:

    <form enctype="multipart/form-data" action="" method="post" data-ajax="false">{% csrf_token %}
            {% for field in form %}
                <div class="fieldWrapper" data-role="fieldcontain">
                    {{ field.errors }}
                    {{ field.label_tag }} {{ field }}
                </div>
            {% endfor %}

        <input type="submit" value="Save">
    </form> 

На мой взгляд, шаблон правильный. Модель Item выглядит хорошо, StdImageField - это оболочка для ImageField. Работает нормально в админке. Форма, кажется, тоже хорошо, ничего особенного. В моем представлении views.py я проверяю POST-запрос, вызываю ItemForm и передаю request.POST и request.FILES (и forsale, который является логическим). Я проверяю, является ли форма действительной, если да, я сохраняю ее. Почему это не работает? Элемент сохранен, но в панели администратора нет файла, связанного с фотографией.

1 ответ

Убедитесь, что параметр MEDIA_ROOT, объединенный с "images/", является допустимым и записываемым путем для процесса Django.

Также с помощью pdb

import pdb; pdb.set_trace()

может помочь вам в процессе поиска проблемы (например, посмотрите на запрос. ФАЙЛЫ, чтобы увидеть, все ли хорошо там во время публикации).

Другие вопросы по тегам