Проблема в том, что мой код заставляет пользователя менять изображение, когда он хочет изменить только содержание или заголовок своей статьи.

Привет всем У меня есть проект блог платформы, пользователь может добавлять, и редактировать блог. Блог содержит (title, slug, contenet, image), я использовал Django и Django Rest Framework для создания сайта, а для frontend ReactJS. Моя проблема в том, что когда я редактирую блог, я не могу редактировать блог до изменения изображения, но для контента и заголовка я могу изменить один из них, но я не могу обновить блог, пока не изменю изображение, Это ошибка, когда просто обновляется заголовок без изменения изображения

model.py

def upload_path(instance, filename):
return 'img/{filename}'.format(filename=filename)

class Blog(models.Model):
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250, unique=True, null=True)
content = models.TextField()
published = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(
    settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='blog_blog')

objects = models.Manager()  # default manager
image = models.ImageField(_("Image"), upload_to=upload_path, null=True)

class Meta:
    def __str__(self):
        return self.title

view.py

class EditBlog(generics.UpdateAPIView):
permission_classes = [permissions.IsAuthenticated, IsOwnerOrReadOnly]
serializer_class = BlogSerializer
queryset = Blog.objects.all()

в React edit.js

Любая подсказка или руководство будут очень полезны для меня, чтобы завершить проект, потому что я застрял в нем более чем на две недели.

Спасибо

Проблема заключается в handleSubmit, вы не можете прочитать значение postimage, если оно равно null:

const handleSubmit = (e) => {
    e.preventDefault();
    console.log(formData);

    let ss = new FormData();
    ss.append('title', formData.title);
    ss.append('slug', formData.slug);
    ss.append('content', formData.content);

    if (postimage != null) {
       ss.append('image', postimage.image[0]);
    }

    axiosInstance.patch(`admin/edit/`+ id + '/', ss,  {
        headers:{
            Authorization: `JWT ${localStorage.getItem('refresh_token')}`
    },
    },)
    .then((res) => {
        // navigate('/admin/');
    });
    
};

Не забудьте установить required=False для поля image в BlogSerializer.

Вернуться на верх