Quiero agregar varios objetos a formdata para que puedan agregarse en la base de datos al mismo tiempo.
Este es mi código javascript para enviar el objeto.
addImages(id) { const formData = new FormData(); this.imageArray.forEach((element) => { formData.append("image",element); formData.append("product", id); }); let config = { headers: { Authorization: `Bearer ${this.$store.state.accessToken}`, "Content-Type": "multipart/form-data" }, }; axios.post(`http://127.0.0.1:8000/images/`, formData, config,); },El problema es que en el backend la información viene así:
<QueryDict: {'product': ['31', '31'], 'image': [<InMemoryUploadedFile: allstar.jpg (image/jpeg)>, <InMemoryUploadedFile: cat.jpeg (image/jpeg)>]}>Y para que se agregue a la base de datos, debería verse similar a esto.
[{'product':'31','image': [<InMemoryUploadedFile: allstar.jpg (image/jpeg)]>}, {'product':'31','image':<InMemoryUploadedFile: cat.jpeg (image/jpeg)>]}>]Una solución que se me ocurrió fue modificar los datos cuando los recibí en el backend
data_list =[] new_data = dict(request.data) for x,y in zip(new_data['image'],new_data['product']): data_list.append({'image':x,'product':y}) Me preguntaba si había una solución más limpia que se pudiera hacer cuando se formdata