Как в 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,)
Здесь можно загрузить изображение обложки
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
Я бы предложил добавить поле под названием historical
, которое является boolean field
в вашем классе. Затем, когда загружается новое изображение, вы должны установить historical=False
и historical=True
для всех остальных. Вы можете достичь этого с помощью:
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
cover.historical=True
data.historical= False
data.save()
cover.save()
return redirect('account:edit', account.id)
else:
f = CoverImageForm()
context['f'] = f