2
我想使用djangorestframework更新模型。我不需要更新所有字段,所以我使用PATCH。但是,在我的表單中,我也有一個圖像字段(稱爲'徽標'),這是我的模型所必需的。當我嘗試「修補」對象並且不爲該字段選擇新圖像時,drf會拋出錯誤('logo':'此字段是必需的')。如何使用djangorestframework更新ImageField/FileField?
我知道當使用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>
盡我所能想出現在是調用序列化之前刪除我request.DATA
的logo
條目。我很好奇,如果有人知道更好的解決方案。謝謝。