У меня есть базовая модель с ImageField и ModelForm для загрузки этого изображения.Моя форма терпит неудачу, говоря, что мое изображение недопустимо, но если я создаю экземпляр изображения модели непосредственно из запроса. ФАЙЛЫ работают отлично.Файл загружен и существует в моем медиа-каталоге.См. Код ниже
Кроме того, это также не работает в Центре администрирования.
Вещи, я уверен, что это не так:
- multipart / form-data
- неверные настройки пути к носителю
- настройки разрешений в этих каталогах.
models.py
class ImageTile(BaseTile):
created_at = models.DateTimeField(default=datetime.datetime.now)
updated_at = models.DateTimeField(auto_now=True)
image = models.ImageField(upload_to='tiles/')
forms.py
class ImageTileForm(forms.ModelForm):
class Meta:
model = ImageTile
fields = ('image', )
views.py
if request.method == 'POST':
# Then we do image tiles
#if request.FILES:
image_form = ImageTileForm(request.POST, request.FILES)
if image_form.is_valid():
image_form.save()
template
<form enctype="multipart/form-data" method="post" action="">
{% csrf_token %}
{{ image_form.non_field_errors }}
{{ image_form.image.errors }}
{{ image_form.image.label_tag }}
{{ image_form.image }}
<button type="submit">Submit</button>
</form>
image_form.errors
django.forms.util.ErrorDict({'image': django.forms.util.ErrorList([u'Upload a valid image. The file you uploaded was either not an image or a corrupted image.' ])})
вывод терминала при выполнении этого вручную
>>> from scrapbook.models import ImageTile
>>> x = ImageTile(image=request.FILES['image'])
>>> x.save()
>>> x.id
2
>>> x.image
<ImageFieldFile: tiles/cathy_orange.jpg>
>>>