Django, [Errno 2] No such file or directory: '/tmp/tmp72r2h258.upload.jpg'

У меня есть форма создания объявления, при загрузке изображений в соотношении сторон: width:4000, height:3000 все сохраняется нормально, но если загрузить изображение с width более 4150 +-, вылетает ошибка:

No such file | [Errno 2] No such file or directory: '/tmp/tmp72r2h258.upload.jpg'

views:

def form_valid(self, form):
    new_ad          = form.save()
    new_ad.slug     = '-'.join(new_ad.ad_title.split()) + '-id-' + str(new_ad.id)
    new_ad.author   = self.request.user
    for image in self.request.FILES.getlist('img'):
        AdImage.objects.create(ad=new_ad, img=image)
    new_ad.save()
    return super(AdCreateMixin, self).form_valid(form)

В models.py я уменьшаю изображение:

class Ad(models.Model):
    img = models.ImageField(upload_to='images/')


class AdImage(models.Model):
    ad      = models.ForeignKey(Ad, on_delete=models.CASCADE, default=None)
    img     = models.ImageField(upload_to='images/')

    # **Такой же save() метод есть и в вверхней модели**

    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)
        img = Image.open(self.img.path)

        if img.height > 500 or img.width > 500:
            output_size = (500, 500)
            img.thumbnail(output_size)
            img.save(self.img.path)

введите сюда описание изображения

upd:

Ad.last_up received a naive datetime (2020-07-10 17:42:09.162217) while time zone support is active.
  warnings.warn("DateTimeField %s received a naive datetime (%s)"
Internal Server Error: /ad/create/
Traceback (most recent call last):
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/sherlock/python/newjerdesh/users/decorators.py", line 8, in wrapper_func
    return view_func(request, *args, **kwargs)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/views/generic/base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/views/generic/edit.py", line 172, in post
    return super().post(request, *args, **kwargs)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/views/generic/edit.py", line 142, in post
    return self.form_valid(form)
  File "/home/sherlock/python/newjerdesh/jerdesh/utils.py", line 26, in form_valid
    AdImage.objects.create(ad=new_ad, img=image)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/query.py", line 433, in create
    obj.save(force_insert=True, using=self.db)
  File "/home/sherlock/python/newjerdesh/jerdesh/models.py", line 74, in save
    super().save(*args, **kwargs)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/base.py", line 745, in save
    self.save_base(using=using, force_insert=force_insert,
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/base.py", line 782, in save_base
    updated = self._save_table(
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/base.py", line 887, in _save_table
    results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/base.py", line 924, in _do_insert
    return manager._insert(
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/query.py", line 1204, in _insert
    return query.get_compiler(using=using).execute_sql(returning_fields)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1391, in execute_sql
    for sql, params in self.as_sql():
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1334, in as_sql
    value_rows = [
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1335, in <listcomp>
    [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1335, in <listcomp>
    [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1286, in pre_save_val
    return field.pre_save(obj, add=True)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/fields/files.py", line 288, in pre_save
    file.save(file.name, file.file, save=False)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/fields/files.py", line 87, in save
    self.name = self.storage.save(name, content, max_length=self.field.max_length)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/files/storage.py", line 52, in save
    return self._save(name, content)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/files/storage.py", line 262, in _save
    file_move_safe(content.temporary_file_path(), full_path)
  File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/files/move.py", line 56, in file_move_safe
    with open(old_file_name, 'rb') as old_file:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmp0x9w2vni.upload.jpg'

Ответы (1 шт):

Автор решения: Medet

Django's default file upload limit is 2.5MB. Change it larger size like this in settings.py file : FILE_UPLOAD_MAX_MEMORY_SIZE = 104857600 (100MB)

→ Ссылка