Изображение не обновляется/заменяется в CRUD
Я делаю CRUD операцию, которая также имеет изображение, я не могу заменить изображение в операции обновления на другое изображение, предыдущее изображение остается, пожалуйста, помогите ниже приведена моя функция обновления
def update(request,id):
if request.method == 'GET':
print('GET',id)
editclothes = Products.objects.filter(id=id).first()
s= POLLSerializer(editclothes)
category_dict = Categories.objects.filter(isactive=True)
category = CategoriesSerializer(category_dict, many=True)
sub_category_dict = SUBCategories.objects.filter(isactive=True)
sub_category = SUBCategoriesSerializer(sub_category_dict,many=True)
color_dict = Colors.objects.filter(isactive=True)
color = ColorsSerializer(color_dict,many=True)
size_dict = Size.objects.filter(isactive=True)
size = SizeSerializer(size_dict,many=True)
hm = {"context": category.data,"sub_context":sub_category.data,"color_context":color.data,"size_context":size.data,"Products":s.data}
return render(request, "polls/product_edit.html", hm)
else:
print('POST',id)
editclothes = {}
d = Products.objects.filter(id=id).first()
if d:
editclothes['categories']=request.POST.get('categories')
# print('categories is equal to:',editclothes['categories'])
editclothes['sub_categories']=request.POST.get('sub_categories')
editclothes['color']=request.POST.get('color')
editclothes['size']=request.POST.get('size')
editclothes['title']=request.POST.get('title')
editclothes['price']=request.POST.get('price')
editclothes['sku_number']=request.POST.get('sku_number')
editclothes['gender']=request.POST.get('gender')
editclothes['product_details']=request.POST.get('product_details')
editclothes['quantity']=request.POST.get('quantity')
if len(request.FILES)!=0:
if len(d.image)>0:
os.remove(d.image.path)
editclothes['image']=request.FILES['image']
form = POLLSerializer(d,data=editclothes)
if form.is_valid():
form.save()
print("data of form",form.data)
messages.success(request,'Record Updated Successfully...!:)')
return redirect('polls:show')
else:
print(form.errors)
print("not valid")
return redirect('polls:show')
ниже приведен мой product_edit html
модель и функция filepath
class Products(models.Model):
categories = models.ForeignKey(Categories,on_delete=models.CASCADE)
sub_categories = models.ForeignKey(SUBCategories,on_delete=models.CASCADE)
color = models.ForeignKey(Colors,on_delete=models.CASCADE)
size = models.ForeignKey(Size,on_delete=models.CASCADE)
image = models.ImageField(upload_to = 'media/',width_field=None,height_field=None,null=True)
title = models.CharField(max_length=50)
price = models.CharField(max_length=10)
sku_number = models.CharField(max_length=10)
product_details = models.CharField(max_length=300)
quantity = models.IntegerField(default=0)
isactive = models.BooleanField(default=True)
def filepath(request,filename):
old_filename = filename
timeNow = datetime.datetime.now().start('%Y%m%d%H:%M:%S')
filename = "%s%s" % (timeNow,old_filename)
return os.path.join('uploads/',filename)
добавление в settings,urls.py
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'
Я новичок в CRUD изображений и я пытался в течение нескольких часов, но так и не добился успеха, помощь будет очень признательна!