我正在使用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有关,这是docs的一部分。我必须在那条路上寻求解决方案。如果我碰巧使用DRF的默认序列化程序类,我没有问题。这个问题让我几乎疯了。如果我找到使用GeoFeatureModelSerializer的解决方案,我会在这里发布。
更新2
将Django-Rest-Framework-Gis更新为最新版本并修复它。谢谢大家的意见和建议。