Как добавить список и текст в React Js в виде FormData
здесь я хочу передать список в FormData с текстовыми элементами тоже.
Ниже я привел весь код backend и frontend с принятыми данными.
Я сталкиваюсь с ошибкой product_image":["Это поле обязательно."] Хотя я передал product_image в FormData Но дело в том, что я добавил как список в formdata, но он является строкой при добавлении, так что пожалуйста, помогите мне.
Эти данные принимаются только Django, так как требуется FormData.
{
"Name": "1",
"category": "1",
"Description": "1",
"archive": "true",
"Main_Image": {},
"Banner": {},
"product_image": [
{
"Name": "img[0]",
"image": {},
"secret_key": "Keys"
},
{
"Name": "img[1]",
"image": {},
"secret_key": "Keys"
}
],
}
Это код Frontend React Js
const handleSubmit = async (event) => {
event.preventDefault();
const products = new FormData();
Object.keys(p_details).forEach((key) => products.append(key, p_details[key]));
// Iterate over the Image object and append each file
var parentObj = [];
for (var key in p_imgs.Image) {
if (p_imgs.Image.hasOwnProperty(key)) {
var file = p_imgs.Image[key];
var nameWithKey = p_imgs.Name + "[" + key + "]";
var obj = {
"Name": nameWithKey,
"user": 2,
"image": file,
"secret_key": "Keys"
};
parentObj.push(obj);
}
}
products.append('product_image', JSON.stringify(parentObj));
try {
const response = await fetch('http://127.0.0.1:8000/media/product/create/', {
method: 'POST',
body: products
});
if (!response.ok) {
const errorMessage = await response.text();
throw new Error(`Server error: ${response.status} - ${errorMessage}`);
}
console.log('File uploaded successfully.', response);
} catch (error) {
console.error('Error uploading file:', error);
console.error('Error uploading file:', error.response.data);
}
};
Это код Django Serializers.py
class ProductSerializer(serializers.ModelSerializer):
product_image = ProductImageSerializer(many = True)
class Meta:
model = ProductSize
fields = "__all__"