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
条目。我很好奇,如果有人知道更好的解决方案。谢谢。