2

我正在使用 Django Rest Framework 为前端创建 REST 端点。我有一个模型,可以上传 3 张图片(foto_1foto_2foto_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=Trueallow_null=Truerequired=False似乎没有任何作用。

更新 1

我发现这与使用 GeoFeatureModelSerializer 有关,这是Django Rest Framework GIS的一部分。我将不得不在这条路线上寻求解决方案。如果我碰巧使用 DRF 的默认序列化程序类,我没有问题。这个问题我几乎要疯了。如果我找到使用 GeoFeatureModelSerializer 的解决方案,我会在这里发布。

更新 2

将 Django-Rest-Framework-Gis 更新到最新版本并修复它。谢谢大家的意见和建议。

4

0 回答 0