Изображение не обновляется/заменяется в 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 изображений и я пытался в течение нескольких часов, но так и не добился успеха, помощь будет очень признательна!

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