Изображение не сохраняется в базе данных 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");
}
});
};