RetrieveUpdateDestroyAPIView поле изображения, когда я обновляю поле в django rest framework
я создал этот api, который имеет модель коллекции, где есть поле изображения. Часть создания списка и коллекции не является проблемой, но часть детализации, особенно обновление имеет проблему, когда я хочу обновить поле, я получаю ошибку, потому что поле изображения не заполнено.
Как я могу это исправить, я бы хотел, чтобы если я не буду менять изображение, то файл останется прежним.
модель
class Collection(models.Model):
name = models.CharField(max_length = 255)
description = models.TextField()
discount = models.PositiveIntegerField(default = 0)
image = models.ImageField(upload_to ='collection/')
active = models.BooleanField(default = False)
def __str__(self):
return self.name
serializer
class CollectionSerializer(serializers.ModelSerializer):
class Meta:
model = Collection
fields = ('id', 'name', 'description', 'discount', 'image', 'active')
просмотров
class CollectionDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Collection.objects.all()
serializer_class = CollectionSerializer
url
path('collections/', CollectionListCreate.as_view(), name="collections-list"),
path('collections/<int:pk>/', CollectionDetail.as_view(), name="collection-detail"),
В соответствии с вашей моделью, поля Discount
и Active
имеют значения по умолчанию. Все остальное является обязательным полем при создании и обновлении объекта.
Если поле изображения не является обязательным, вы можете добавить blank=True
к полю изображения, чтобы оно не требовалось при отправке формы.
image = models.ImageField(upload_to ='collection/', blank=True)
ИЛИ
вы можете добавить required=False в сериализатор,
class CollectionSerializer(serializers.ModelSerializer):
image = serializers.ImageField(required=False)
class Meta:
model = Collection
fields = ('id', 'name', 'description', 'discount', 'image', 'active')