переопределить метод сохранения-объект "ImageFile" не имеет атрибута "committed"
Я переопределяю метод save, как показано ниже, и get_thumbnails и save с помощью sorl..
но получаю ошибку 'ImageFile' object has no attribute '_committed'
class HotelPhotos(models.Model):
hotel = models.ForeignKey(Hotel, related_name='photos')
code = models.CharField(max_length=255)
original = models.ImageField(upload_to="media")
medium = models.ImageField(upload_to="media", null=True, editable=False)
thumbnail = models.ImageField(upload_to="media", null=True, editable=False)
def save(self, *args, **kwargs):
super(HotelPhotos, self).save(*args, **kwargs)
self.medium = get_thumbnail(self.original,
'100x100',
crop='center',
quality=99)
self.thumbnail = get_thumbnail(self.original,
'50x50',
crop='center',
quality=99)
super(HotelPhotos, self).save(*args, **kwargs)
какие идеи ?
2 ответов
self.thumbnail = get_thumbnail(self.original,
'50x50',
crop='center',
quality=99).url
решить мою проблему ..
недавно я обнаружил аналогичную ошибку, которая произошла при обновлении содержимого ImageField через администратора django.
сообщение об ошибке: объект'InMemoryUploadedFile' не имеет атрибута '_committed'
models.py:
class MyObject(models.Model):
name = models.CharField(max_length=80, unique=True, db_index=True)
slug = models.SlugField(max_length=80, unique=True, blank=False)
some_image = ImageField(upload_to='uploads/some/')
# ... deleted for brevity
Это не повлияло на каждую модель, я сузил ее до этого:
admin.py:
class MyObjectAdmin(admin.ModelAdmin):
# ...
def queryset(self, request):
return super(ShipAdmin, self).queryset(request).only('name', 'slug')
решение было либо изменить admin queryset так:
admin.py:
class MyObjectAdmin(admin.ModelAdmin):
# ...
def queryset(self, request):
return super(MyObjectAdmin, self).queryset(request).only('name', 'slug', 'some_image')
или просто избавиться от него полностью, так как он больше не был нужен/релевантен.