Django/React/Axios Обновление изображения отправляет строковое значение вместо обновления изображения
Я пытаюсь разработать веб-сайт для организации выпускников. У меня есть таблица для событий с несколькими полями, два из которых являются полями изображений. Я могу успешно создать событие со всеми полями, но я не могу обновить его, как предполагалось. Когда я пытаюсь обновить, я могу обновить только одно поле, если я меняю и картинку. Я думаю, что он отправляет URL-адрес местоположения фотографии в виде строки, поэтому я получаю ошибку "файл не соответствует ожидаемому формату", но если я загружаю изображение, оно работает как положено. Я хотел бы иметь возможность обновлять другие поля без необходимости изменять изображение. Поля изображения - это gallery и banner_image (я просто пытаюсь пока решить проблему с одним из них, и они находятся в нижней части формы. У меня есть мои функции axios http в отдельном файле.
Аксиос функции
import axios from "axios";
const apiUrl = "/accounts/register/";
const loginUrl = "/accounts/login/"
const eventUrl= "/main/api/event/";
// Auth
export const signup = (user)=>{
return axios.post(apiUrl,user)
}
export const login = (user)=>{
return axios.post(loginUrl,user,{},{auth:user});
}
// Events
export const getEvents = ()=>{
return axios.get(`${eventUrl}`)
}
export const createEvent = (eventObject)=>{
return axios.post(eventUrl,eventObject);
}
export const getEventById = (id)=>{
return axios.get(`${eventUrl}${id}/`);
}
export const deleteEventById = (id)=>{
return axios.delete(`${eventUrl}${id}/`);
}
export const updateEventById = (id, eventObject)=>{
return axios.put(`${eventUrl}${id}/`,eventObject);
}
Django models:
from django.db import models
from datetime import date
from accounts.models import User
from .states import CONTIGUOUS_STATES
class Event(models.Model):
event_name = models.CharField(max_length=150)
date = models.CharField(max_length=40)
time = models.CharField(max_length=40,null=True, blank=True)
address_line = models.CharField(max_length=250, null=True, blank=True)
city = models.CharField(max_length=150, blank=True, null=True, default=None)
state = models.CharField(max_length=25, choices=CONTIGUOUS_STATES, default='Louisiana')
zip_code = models.CharField(max_length=150)
contact_name = models.CharField(max_length=150, blank=True, null=True, default=None)
contact_number = models.CharField(max_length=150, blank=True, null=True, default=None)
contact_email = models.EmailField(max_length=150, blank=True, null=True, default=None)
banner_image = models.FileField(upload_to='media/Event Media', null=True, blank=True, default='EventBannerDefault.jpg')
gallery = models.ImageField(upload_to='media/Event Media', null=True, blank=True,)
description = models.TextField(max_length=2500)
# rsvpd_members = models.ManyToManyField(User, blank=True)
registration_fees = models.CharField(max_length=150, null=True, blank=True)
def __str__(self):
return(self.event_name)
Страница формы для обновления событий