Обновление объекта базы данных в Django

Я делаю проект на Django, в котором пользователь загружает свою фотографию, и она сохраняется в базе данных. И если пользователь загружает одну и ту же фотографию несколько раз в один и тот же день, он обновляет существующее поле, а не создает новое. Моя ошибка заключается в том, что при обновлении существующего поля создается новое. Как это исправить?

Вот мой код:

if img == None:
        messages.error(request, "Please submit an image.")
        return render(request, 'page.html')
elif Image.objects.filter(user=user, date=today).exists():
        image_file_like = ContentFile(base64.b64decode(img))
        a=str(uuid.uuid4())
        image = Image(user=user)
        image.img.save(f"{a}.png", image_file_like, save=True)
        path = f"media/{a}.png"
        toUpdate = Image.objects.filter(user=user, date=today) 
        toUpdate.update(img = path)
        print('works2')
        return render(request, 'page.html')
else:
        image_file_like = ContentFile(base64.b64decode(img))
        a=str(uuid.uuid4())
        image = Image(user=user)
        print('works3')
        image.img.save(f"{a}.png", image_file_like, save=True)
        image.save() 
        return render(request, 'page.html')

Спасибо

В обоих ваших блоках оператора if одинаковый код сохранения изображения, независимо от того, существует ли уже изображение или нет - это и есть виновник:

 image = Image(user=user)
 image.img.save(f"{a}.png", image_file_like, save=True)

Этот код также не добавляет 'today' к Image, установлено ли это значение как auto_now_add в вашей модели? Если нет, то сравнение в if-заявлении всегда будет неудачным.

Вернуться на верх