我正在使用 Django Rest Framework 为前端创建 REST 端点。我有一个模型,可以上传 3 张图片(foto_1、foto_2、foto_3)。
class Ocorrencia(TimeStampedModel):
(...)
foto_1 = models.ImageField("Foto 1", upload_to="ocorrencias/", blank=True)
foto_2 = models.ImageField("Foto 2", upload_to="ocorrencias/", blank=True)
foto_3 = models.ImageField("Foto 3", upload_to="ocorrencias/", blank=True)
我的序列化程序如下:
class OcorrenciaSerializer(GeoFeatureModelSerializer):
(...)
foto_1 = serializers.ImageField(allow_empty_file=True, allow_null=True, required=False, use_url=True)
foto_2 = serializers.ImageField(allow_empty_file=True, allow_null=True, required=False, use_url=True)
foto_3 = serializers.ImageField(allow_empty_file=True, allow_null=True, required=False, use_url=True)
class Meta:
model = models.Ocorrencia
geo_field = 'geometria'
fields = ('foto_1', 'foto_2', 'foto_3')
例如,如果 foto_3 在数据库中没有关联的文件 url(它为空时保存为空字符串),那么在检索关联的端点时会出现以下错误:
异常值:“foto_3”属性没有与之关联的文件。
在为图像字段定义序列化程序时使用allow_empty_file=True、allow_null=True、required=False似乎没有任何作用。
更新 1
我发现这与使用 GeoFeatureModelSerializer 有关,这是Django Rest Framework GIS的一部分。我将不得不在这条路线上寻求解决方案。如果我碰巧使用 DRF 的默认序列化程序类,我没有问题。这个问题我几乎要疯了。如果我找到使用 GeoFeatureModelSerializer 的解决方案,我会在这里发布。
更新 2
将 Django-Rest-Framework-Gis 更新到最新版本并修复它。谢谢大家的意见和建议。