Я хочу обновить модель, используя djangorestframework. Мне не нужно обновлять все поля, поэтому я использую PATCH. Однако в моей форме у меня также есть поле изображения (называемое «логотип»), которое требуется для моей модели. Когда я пытаюсь «запланировать» объект, и я не выбираю новое изображение для этого поля, drf выдает ошибку («логотип»: «Это поле обязательно»).Как обновить ImageField/FileField с помощью djangorestframework?
Я знаю, что при использовании форм django поля файлов получают специальное обращение, что означает, что если у них уже есть значение, отправка формы с пустым файловым полем просто сохранит старое значение. Есть ли способ сделать это с помощью сериализаторов djangorestframework?
Некоторый код для лучшего понимания:
# models.py
class Brand(models.Model):
name = models.CharField(_('name'), max_length=250)
logo = models.ImageField(upload_to='brands/')
# serializers.py
class BrandSerializer(serializers.ModelSerializer):
class Meta:
model = Brand
fields = (
'id',
'name',
'logo',
)
# detail.html
<form method="post" enctype="multipart/form-data">
{%csrf_token%}
<input name="name" type="text" maxlength="30" value="{{ brand.name }}"/>
<input name="logo" type="file" accept="image/*"/>
<input name="_method" type="hidden" value="PATCH">
<input type="submit" value="Update"/>
</form>
Лучшее, что я мог придумать сейчас было удалить logo
запись из моих request.DATA
перед вызовом сериалайзер. Мне любопытно, знает ли кто-нибудь лучшее решение. Благодарю.