Обновление объекта базы данных в 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-заявлении всегда будет неудачным.