Je veux mettre à jour un modèle en utilisant djangorestframework. Je n'ai pas besoin de mettre à jour tous les champs, donc j'utilise PATCH. Cependant, dans ma forme j'ai aussi un champ d'image (appelé «logo»), qui est requis pour mon modèle. Lorsque j'essaie de 'patcher' l'objet et que je ne choisis pas une nouvelle image pour ce champ, drf renvoie une erreur ('logo': 'Ce champ est obligatoire').Comment mettre à jour ImageField/FileField en utilisant djangorestframework?
Je sais que lorsque vous utilisez des formulaires django, les champs de fichiers reçoivent un traitement spécial, ce qui signifie que s'ils ont déjà une valeur, soumettre le formulaire avec un champ de fichier vide conservera simplement l'ancienne valeur. Est-il possible de faire cela en utilisant des sérialiseurs djangorestframework?
Une partie du code pour une meilleure compréhension:
# 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>
Le mieux que je pouvais venir avec pour l'instant était de supprimer l'entrée de mon request.DATA
logo
avant d'appeler le sérialiseur. Je suis curieux de savoir si quelqu'un connaît une meilleure solution. Merci.