Невозможно сохранить изображение в папку "media", когда поле ImageField UPDATES
Я использую ajax для отправки файла изображения через formdata()
Код Javascript:
$("#change-default-img").change(function () {
let category = $($("#category-buttons-row").find('button[aria-label="ACTIVE"]')).attr("id")
// Change preview in the UI
if (this.files && this.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$("#imagePreviewDefault").css('background-image', 'url(' + e.target.result + ')');
}
reader.readAsDataURL(this.files[0]);
}
var fileData = new FormData();
fileData.append("file", this.files[0])
fileData.append("csrfmiddlewaretoken", "{{ csrf_token }}")
fileData.append("category", category)
$.ajax({
method: "POST",
url: "{% url 'set-default-image' %}",
processData: false,
contentType: false,
mimeType: "multipart/form-data",
data: fileData,
success: function (response) {
data = $.parseJSON(response);
if (data.status == "Done") {
console.log("Default image updated for " + category);
}
}
})
})
Это мой взгляд на обновление ImageField
if request.method == 'POST':
category = request.POST['category']
image = request.FILES.get('file')
image = f'default_images/{image}'
if category == 'category-logo':
DefaultImages.objects.filter(app_name='payup').update(app_logo=image)
elif category == 'category-property':
DefaultImages.objects.filter(app_name='payup').update(property_card=image)
elif category == 'category-owner':
DefaultImages.objects.filter(app_name='payup').update(owner_profile=image)
elif category == 'category-renter':
DefaultImages.objects.filter(app_name='payup').update(renter_profile=image)
return JsonResponse({'status': 'Done'})
Это моя models.py
class DefaultImages(models.Model):
app_name = models.CharField(max_length=5, default='payup')
app_logo = models.ImageField(upload_to="default_images/", null=True)
property_card = models.ImageField(upload_to="default_images/", null=True)
owner_profile = models.ImageField(upload_to="default_images/", null=True)
renter_profile = models.ImageField(upload_to="default_images/", null=True)
def __str__(self):
return self.app_name
Вот как выглядит каталог :
media
---- backup_images
---- profile_images
---- prop_images
Когда я меняю изображение в UI, запрос POST отправляется успешно, события ImageField успешно обновляются, например, если имя предыдущего изображения " 1.png " и я загружаю новое изображение с именем " 2.png ", ImageField обновляется с default_images/1.png до default_images/2.png, что я могу видеть на панели администратора. Но изображение " 2.png " не сохраняется в media/default_images/.
Настройки для MEDIA и MEDIA_ROOT установлены идеально, раньше это даже работало. После этого я внес много изменений в базу данных. Какие-то из этих изменений должны мешать сохранению изображения, но я не могу понять этого.