Изображение не сохраняется в базе данных django

form.html

views.py

def productform(request):
    return render(request, 'app/product_form.html')

class ProductCreateView(CreateView):
   model = Product
   fields = ['name', 'price', 'description', 'image']
   success_url=reverse_lazy('create-form')

def addProduct(request):
    if request.method == "POST":
        product=Product()
        product.name = request.POST['name']
        product.description = request.POST['description']
        product.price = request.POST['price']
        
        if len(request.FILES) != 0:
            if len(product.image) > 0:
                os.remove(product.image.path)
            product.image = request.FILES['image']
        
        product.save()
        
        
        return render(request, 'app/product_form.html')
    else:
        return render(request, 'app/product_form.html')




#    def get_success_url(self):
#        return reverse('successlist')



def detail_view(request, id):
    context ={}
    context["data"] = Product.objects.get(id = id)
         
    return render(request, "detail_view.html", context)

Изображение не сохраняется в базе данных django Я не знаю в чем проблема, но имя файла изображения отображается в console.log в ajax. Проблема в том, что изображение не сохраняется в базе данных. Когда я пытаюсь распечатать(request.FILES), он показывает, что мультидикт пуст. Я привел html код views код пожалуйста проверьте Пожалуйста, помогите мне решить эту проблему Заранее спасибо

в файле form.html попробуйте добавить

<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    # the rest of your code
</form>

Если вы используете объект formdata в $.ajax запросе, вы должны установить поле data в этот объект formdata.
. Также все поля должны быть в нем, добавьте все поля в него, когда вы делаете ajax запрос, не раньше.

    self.save = function () {

        var formdata = new FormData();
        formdata.append('image', $('#image').get(0).files[0]);
        formdata.append('name', ko.observable(""));
        formdata.append('price', ko.observable(""));
        formdata.append('description', ko.observable(""));
        $.ajax({
            type: 'POST',
            url: "{% url 'addProduct' %}",
            data: formdata,
            headers: {'X-CSRFToken': csrftoken},
            processData: false,                
            contentType: false,
            success: function (){
                alert('The post has been created!')
            },
            error: function () {
                alert("fail");
            }
        });
    };
Вернуться на верх