Как заставить Django хранить уже загруженное изображение обложки для пользователя без его удаления
Как заставить Django хранить уже загруженное изображение обложки пользователя, не удаляя его при загрузке нового изображения, а просто заменяя его? У меня возникла проблема, когда я пытаюсь понять, как сохранить старые изображения обложки при добавлении новых. Происходит так, что когда я загружаю новое изображение обложки, оно просто удаляет предыдущее из базы данных. Вот мои модели изображений обложки:
class AccountCover(models.Model):
account = models.ForeignKey(Account,on_delete=models.CASCADE)
cover_image = models.ImageField(max_length=255,upload_to=get_cover_cover_image_filepath,default=get_default_cover_image,)
Мой view.py
cover = AccountCover.objects.filter(account=account.id).first()
if request.user:
forms = CoverImageForm(request.POST, request.FILES,instance=cover,
initial = {'cover_image':cover.cover_image})
if request.method == 'POST':
f = CoverImageForm(request.POST, request.FILES,instance=cover)
if f.is_valid():
data = forms.save()
data.account = cover.account
data.save()
return redirect('account:edit', account.id)
else:
f = CoverImageForm()
context['f'] = f
Вы можете сохранить старые экземпляры AccountCover, заставляя форму каждый раз сохранять новый экземпляр. Просто удалите аргумент instance в форме, и не забывайте сохранять форму с commit=false перед тем, как установить внешний ключ account.
forms = CoverImageForm(request.POST, request.FILES, initial={'cover_image': cover.cover_image})
# ...
data = forms.save(commit=False)
data.account = cover.account
data.save()
Полагаю, вам нужно сохранить старую запись базы данных, а не только файл изображения. Файл изображения, не имеющий никакого отношения к реестру пользователя, не имеет никакой пользы.